2014-01-23 2 views
1

На питона 3.3, используя IPython0 Позиционные заданы параметры, но один дал, но почему

class Gear: 
    def __init__(self,chainring,cog): 
     self.chainring = chainring 
     self.cog = cog 
    def ratio() : 
     ratio = self.chainring/self.cog 
     return ratio 


mygear = Gear(52,11) 
mygear.ratio() 

Ошибка

TypeError: ratio() takes 0 positional arguments but 1 was given 
+2

Связанные вопрос: [? Почему доступ к переменной класса из класса нужно «сам» в Python] (http://stackoverflow.com/q/13652006/510937) – Bakuriu

ответ

7

Когда ты

mygear.ratio() 

питон будет внутренне вызывать функцию как этот

ratio(mygear) 

Но согласно определению этой функции,

def ratio() : 

он не принимает никаких входных параметров. Измените его, чтобы принять текущий объект, как этот

def ratio(self): 
2
def ratio(self): 

Вы должны поставить себя в методах

2

Все методы экземпляра в Python нужно взять self аргумент.

def ratio(self): 
Смежные вопросы