Вот то, что я до сих пор:Почему у меня нет конструктора varargs и другого конструктора с фиксированными аргументами?
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'
. Это означает, что он сначала входит в конструктор varargs. Что я могу сделать здесь, чтобы сделать эту работу, или есть другая альтернатива?
он не входит в конструктор varargs first. В определении класса все методы уникальны, там нет двух конструкторов (они на самом деле являются инициализаторами). Ваш 'die_list' является кортежем целых чисел, которые проходят. – SilentGhost