如何更改 Python 中另一个 class 的变量值?
How can I change the value of a variable from another class in Python?
我尝试了研究,但我所能找到的只是访问另一个 class 变量的方法,所以这是我的问题:
我希望我的 Monster() class 在其方法 interact 中包含一个代码,该代码将从变量 pkt 在 Player() class.
我试过了:
super(Player, self)._ _init_ _(pkt) -= 10
但它打印出 SyntaxError 说“这是一个用于扩充赋值的非法表达式。”
你能帮忙吗?这是代码:
from abc import ABC, abstractmethod
from random import random
class GameObject(ABC):
def __init__(self, pkt):
self.pkt = pkt
@abstractmethod
def is_alive(self):
return self.pkt > 0
def interact(self):
pass
class Player(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
super().is_alive()
def interact(self):
pass
class Door(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
pass
def interact(self):
print("Player went through the door.")
class Monster(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
pass
def interact(self):
super(Player, self).__init__(pkt) -= 10
print('Player killed the Monster.')
p1 = Player()
board = []
for i in range(0,10):
if random() < 0.70:
board.append(Monster())
else:
board.append(Door())
for i in board:
if p1.is_alive() == False:
break
else:
i.interact()
print(p1.pkt)
您只需
def interact(self, player):
player.pkt -= 10
player
类型 Player
。
我尝试了研究,但我所能找到的只是访问另一个 class 变量的方法,所以这是我的问题:
我希望我的 Monster() class 在其方法 interact 中包含一个代码,该代码将从变量 pkt 在 Player() class.
我试过了:
super(Player, self)._ _init_ _(pkt) -= 10
但它打印出 SyntaxError 说“这是一个用于扩充赋值的非法表达式。”
你能帮忙吗?这是代码:
from abc import ABC, abstractmethod
from random import random
class GameObject(ABC):
def __init__(self, pkt):
self.pkt = pkt
@abstractmethod
def is_alive(self):
return self.pkt > 0
def interact(self):
pass
class Player(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
super().is_alive()
def interact(self):
pass
class Door(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
pass
def interact(self):
print("Player went through the door.")
class Monster(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
pass
def interact(self):
super(Player, self).__init__(pkt) -= 10
print('Player killed the Monster.')
p1 = Player()
board = []
for i in range(0,10):
if random() < 0.70:
board.append(Monster())
else:
board.append(Door())
for i in board:
if p1.is_alive() == False:
break
else:
i.interact()
print(p1.pkt)
您只需
def interact(self, player):
player.pkt -= 10
player
类型 Player
。