2016-03-26 2 views
0

У меня есть класс с 2 атрибутами, и у меня есть функция, которая генерирует объект из кортежа, но выглядит как Python отказывается передать кортеж в качестве аргумента здесь это код:должен быть вызван с экземпляром Obj (получил вместо tuple)

class Obj(object): 
    def __init__ (self,x,y): 
    self.x=x 
    self.y=y 
    def divide (t): 
    a=t[0]*2 
    b=t[1]+t[2] 
    return Obj(a,b) 

r=(5,2) 
o=Obj.divide(r) 
print(o) 

и вот ошибка

Traceback .......,line 12 , in <module> o=Obj.divide(r) 
TypeError: unbound method divide() must be called with Obj instance as first argument (got tuple instance instead) 
+0

пожалуйста исправить отступы –

ответ

1

в Python вы должны явно включать self аргумент в сигнатуре метода:

def divide(self ,t): 
    pass # do your stuff 

или если вы хотите, чтобы это было classmethod:

@classmethod 
def divide(cls ,t): 
    pass # do your stuff 

PS. у вас есть другие ошибки в коде, но вы должны быть в состоянии понять их по своему усмотрению теперь ...

+0

он еще спрашивает, например, Obj в качестве аргумента –

+0

на самом деле это помогло все, что мне было нужно, чтобы инициализировать o 'o = Obj (0,0) r = (5,2) o = Obj.divide (o, r)' –

+0

Если у вас есть объект, инициализированный, вы можете просто 'o.divide (r)' –

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

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