我正在開發一款遊戲,我想要做的事情之一就是擁有一個定義屬性損害的基類,並使用構造函數來啓動該值。這是我的基類在類中調用基本方法
class Weapon(object):
def __init__(self, damage):
self.damage = damage
這是實際的類的武器,呼籲遊戲
class Crossbow(Weapon):
is_loaded = True
reloads = 5
def __init__(self, is_loaded, reloads):
super(Crossbow, self).__init__()
self.is_loaded = is_loaded
self.reloads = reloads
def reload(self):
print "You need to reload, before you can fire again"
time.sleep(2)
if reloads > 0:
print "Reloading bow"
time.sleep(2)
reloads -= 1
is_loaded = True
print "Successfully reloaded bow"
time.sleep(1)
print "You now have",reloads,"arrow left"
time.sleep(2)
else:
print "You don't have any more arrows"
time.sleep(2)
使用我測試的重載函數:
c = Crossbow(Weapon)
for i in range(1,6):
c.reload()
我跑的原因班級方法6次,是我想測試重新加載變量的數量,你要重新加載多少次。它每次計算都會減去,一旦它減少到零,它不會讓你重新加載,所以6次就能夠測試完整的功能。然而,當我運行的代碼塊,我得到這個錯誤:
me.py", line 47, in <module>
c = Crossbow(Weapon)
TypeError: __init__() takes exactly 3 arguments (2 given)
我以前用過類
,但我是新來創建一個基類,構造函數和調用其它類關的那個。如果有人能幫助我理解我的問題,我將非常感激。
不要嘗試爲類屬性聲明的默認值。這不是一個「可選的好東西」,它把那些不應該存在的東西放在那裏。在Python中,創建實例屬性的正確方法是隻分配'self.attribute = ...' –
是的,這是一種常見的做法,但通常很糟糕。 –