0位置参数,但给出一个,但为什么

时间:2014-01-23 13:11:17

标签: python

在python 3.3上使用Ipython

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

3 个答案:

答案 0 :(得分:7)

当你说

mygear.ratio()

python将在内部调用像这样的函数

ratio(mygear)

但是根据该功能的定义,

def ratio () :

它不接受任何输入参数。将其更改为接受当前对象,如此

def ratio(self):

答案 1 :(得分:2)

def ratio(self):

你需要将self放在方法

答案 2 :(得分:2)

Python中的所有实例方法都需要使用self参数。

def ratio(self):