关于python:0位置参数,但给出了一个,但为什么

0 Positional arguements but one given but why

在python 3.3上使用ipython

1
2
3
4
5
6
7
8
9
10
11
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()

误差

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


当你说

1
mygear.ratio()

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

1
ratio(mygear)

但是根据这个函数的定义,

1
def ratio () :

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

1
def ratio(self):

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

1
def ratio(self):


1
def ratio(self):

你需要把自己放在方法里面