我正在尝试创建一个非常基本的类RPG游戏,您可以在其中选择一个角色,给该角色一个武器,然后根据该角色的统计信息告诉其攻击另一个角色性格和武器。 weapon
类属于称为Equip
的顶级类。当我尝试但是设置结合了武器的统计攻击损伤变量,我得到:不传递给对象的类属性
'Char' object has no attribute 'weapon.'
我有Char
类weapon
值设置为None
为默认值。但在下面,我使用dean.weapon = sword
(这是一个weapon
)给出了字符(dean
)的武器。我试过将weapon.wgt
更改为self.weapon.wgt
,但这似乎没有帮助。
查看代码的相关部分,而忽略了attack
代码,因为我不认为它与问题相关,会使事情混乱,但如果有必要,我会尽力的。
我相信代码是一团糟,所以建设性的批评将不胜感激。
代码:
class Char(object):
def __init__(self, name):
name = name
hp = 300
mp = 10
strn = 1
dmg = 1
dex = 1
armor = 0
weapon = None
attack_speed = dex
intact_bones = ["right arm", "left arm", "right leg", "leg leg", "skull", "sternum", "nose"] # JUST ASSUME RIGHT SIDE IS PRIMARY SIDE FOR NOW
broken_bones = [] ### define what to do per bone if bone is in this list
dmg = strn * self.weapon.wgt
class Equip(object):
wgt = 1
desc = ""
def __init__(self, name):
self.name = name
class weapon(Equip):
impact = 1
sharp = 1
def __init__(self, name):
self.name = name
sword = weapon("Sword")
sword.wgt = 10
sword.impact = 6
sword.sharp = 7
dean.weapon = sword
dean.attack(hamilton)
嗯,有道理。好吧,当我回家后,我会试试这个,看看是否能解决这个问题。谢谢。 – rrr45
好的,就是这样。所以,基本上,我通常应该把自己置于__init__之下的所有内容之前,看起来像? 此外,我现在有一个相同的代码的新问题。我对StackOverflow相当陌生。我应该问这里还是开始一个新线程? – rrr45
@ rrr45好吧,不是_everything_,而是应该是实例属性的所有东西。如果你声明了一些临时变量,你不需要使用'self'。很高兴我能帮上忙。如果您有后续问题,则应将其作为新问题发布,但也可以在上下文中添加此问题的链接。 –