【发布时间】:2016-08-07 09:02:05
【问题描述】:
当我尝试创建一个“BJ_player”对象时:
player = BJ_player(name, number_chips)
我收到:
TypeError: init() 正好采用 2 个位置参数(给定 3 个)。
我使用从“BJ_Hand”继承的方法与从“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)。 -
这不是一个真正的多重继承问题,尽管有标题和标签。多重继承是指子类具有多个直接父类(例如母亲和父亲),而不是当您从一个本身继承自另一个类(例如父亲和祖父)的类继承时。
标签: python class inheritance methods