这是我到目前为止有:为什么我不能有一个可变参数构造函数和另一个带有固定参数的构造函数?
class Die (object):
def __init__(self,sides):
self.sides = sides
def roll(self):
return random.randint(1,self.sides)
def __add__(self,other):
return Dice(self,other)
def __unicode__(self):
return "1d%d" % (self.sides)
def __str__(self):
return unicode(self).encode('utf-8')
class Dice (object):
def __init__(self, num_dice, sides):
self.die_list = [Die(sides)]*num_dice
def __init__(self, *dice):
self.die_list = dice
def roll(self):
return reduce(lambda x, y: x.roll() + y.roll(), self.die_list)
但是,当我尝试做Dice(3,6)
,并随后致电roll
动作它说,它不能因为'int' object has no attribute 'roll'
。这意味着它首先进入可变参数构造函数。我能做些什么来完成这项工作,还是有另一种选择?
它不会“首先进入可变参数构造函数”。在类定义中,所有方法都是唯一的,在那里没有两个构造函数(它们实际上是初始化函数)。你的`die_list`是一个通过整数的元组。 – SilentGhost 2011-01-29 20:42:12