【发布时间】:2011-01-29 20:21:24
【问题描述】:
这是我目前所拥有的:
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是一个通过的整数元组。
标签: python constructor