這是我到目前爲止有:爲什麼我不能有一個可變參數構造函數和另一個帶有固定參數的構造函數?
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