我发现这个示例非常令人困惑,因为他们使用了两个不同的参数,为什么?
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
答案 0 :(得分:5)
实例方法的第一个参数始终是对该实例的引用。
作为一种惯例,您通常将此参数命名为 self ,但是您可以随意给该参数指定其他有效名称,如您发布的代码所示。< / p>
答案 1 :(得分:1)
因此在python中,对于实例方法,第一个参数用于类的实例。如其他答案所述,这是 self 参数。但这只是按照惯例。从bananas
到mysillyobject
,您都可以使用。
因此,在您的类中,将myfunc()方法定义为仅接受一个参数,这是我之前提到的实例。
因此,当您从p1(其中p1是Person类的对象)调用myfunc()时,您隐式地将p1传递给定义中提到的参数abc
:
def myfunc(abc): # p1 is passed for abc
print("Hello my name is " + abc.name)
因此,访问并打印p1.name以提供正确的输出