Python模块,类,方法basicks

Jak*_*Zak 0 python methods module class

我是python的新手,对我来说,我经历过奇怪的行为.我有两个文件:foo.py和test.py

test.py:

from foo import Foo
f = Foo()
f.bar(1)
Run Code Online (Sandbox Code Playgroud)

当我的foo.py看起来像这样:

class Foo:
    def bar(n):
        print n
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

Traceback (most recent call last):
File "test.py", line 3, in <module>
f.bar(1)
TypeError: bar() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)

当我的foo.py看起来像这样:

class Foo:
    def bar(x,n):
        print n
Run Code Online (Sandbox Code Playgroud)

我得到结果:

1
Run Code Online (Sandbox Code Playgroud)

这是为什么?为什么我需要声明两个参数,即使我想要只有一个方法?谢谢

sky*_*ing 5

方法中的第一个参数应该是调用该方法的对象.那就是当你调用f.foo(1)它意味着foo将使用参数调用foo(f, 1).通常一个调用第一个参数self,但python不关心名称,第二个例子是对象f将通过x参数发送.