我正在嘗試創建一個非常基本的類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'。很高興我能幫上忙。如果您有後續問題,則應將其作爲新問題發佈,但也可以在上下文中添加此問題的鏈接。 –