2016-02-03 5 views
-5

Я не понимаю, что не так. Я продолжаю понимать, что мне не хватает необходимого позиционного аргумента.__init __() отсутствует 1 требуемый позиционный аргумент: «Значение»

class CoinToss(object): 

    def __init__(self, flip, ID_Num, Value): 
     self.flip = flip 
     self.ID_Num = ID_Num 
     self.Value = Value 

    def Flip(self): 
     """ 
     Method is important in determining the number of flips and simulating the coin 
     """ 
     data = [] 
     Num_flip = int(input("how many times do you want to flip the coin? :")) 
     print("the ball at the start: ball: d%, state: d% value: d% " %(self.ID_Num)) 
     for i in range(Num_flip): 
      self.flip = self.flip = 1 
      if randint(0,1) == 0: 
       self.Value = self.Value + 1 
       data.append(self.value) 

      else: 
       self.Value = self.Value - 1 
       data.append(self.Value) 
+1

Вы создаете класс 'CoinToss' неверным способом, не предоставляя все необходимые аргументы. Просто проверьте, сколько аргументов вы переходите к нему, вы его не заметили. –

+0

Я не могу найти, какие аргументы им передаются ему. a я пропустил что-то простое? –

+0

Где вы создаете объект 'CoinToss' в первую очередь? Я собираюсь угадать, что вы неправильно поняли, как работают инициализаторы Python, и сделал «CoinToss .__ init __ (x, y, z)» (который не подразумевает создание экземпляра и передает его как «self»), когда вы должны делать ' CoinToss (x, y, z) ', который создает экземпляр, затем передает его как первый аргумент неявно. – ShadowRanger

ответ

2

Очевидно, что при использовании CoinToss, вы называете это только с 2 аргументами, flip и ID_NUM. Это приведет к ошибке, поскольку вы не указали CoinToss.__init__() с требуемым аргументом Value.

+0

Как я могу предоставить аргумент? –

+0

Я не уверен, что делает этот код, но похоже, что вы должны предоставить его либо 0, либо 1 в зависимости от того, хотите ли вы головы или хвосты. Кстати, 'if randint (0,1) == 0: self.Value = self.Value + 1 data.append (self.value)' добавляет 'self.value', которого не существует. Это должно быть 'data.append (self.Value)'. Кроме того, первая строка вашего цикла for - 'self.flip = self.flip = 1'. Это можно упростить до 'self.flip = 1'. – zondo

Смежные вопросы