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)
这是为什么?为什么我需要声明两个参数,即使我想要只有一个方法?谢谢
方法中的第一个参数应该是调用该方法的对象.那就是当你调用f.foo(1)它意味着foo将使用参数调用foo(f, 1).通常一个调用第一个参数self,但python不关心名称,第二个例子是对象f将通过x参数发送.