當我試圖創建一個「BJ_player」對象:方法繼承問題
player = BJ_player(name, number_chips)
我收到:
TypeError: init() takes exactly 2 positional arguments (3 given).
我用同樣的方法從「BJ_Hand」繼承和我一樣從'手'繼承。
請問有人能解釋一下嗎?
這第一類是位於 'cardsmodule':
class Hand(object):
"""A hand of playing cards"""
def __init__(self):
self.cards = []
def __str__(self):
if self.cards:
rep = ""
for card in self.cards:
rep += str(card) + "\t"
else:
rep = "<empty>"
return rep
class BJ_hand(cardsmodule.Hand):
"""A BlackJack hand"""
def __init__(self, name):
super(BJ_hand, self).__init__()
self.name = name
def __str__(self):
rep = self.name + "\t" + super(BJ_hand,self).__str__()
if self.total:
rep += "(" + str(self.total) + ")"
return rep
class BJ_player(BJ_hand):
"""A BlackJack player"""
def __init__(self, number_chips):
super(BJ_player, self).__init__()
#self.name = name
self.number_chips = number_chips
def __str__(self):
rep = self.name + " has " + str(self.number_chips) + " chips.\n"
rep += super(BJ_player, self).__init__()
您的'BJ_player'類構造函數不期望'name'參數。你需要添加一個'name'參數並傳遞給'super(BJ_player,self).__ init __(name)'。 –
儘管有標題和標籤,但這並不是一個多重繼承問題。多重繼承是指當一個子類擁有多個直接父類(例如,母親和父親)時,而不是從自己從另一個類繼承的類(例如父親和祖父)繼承時。 – Blckknght
謝謝。編輯。 –