使用类名和点运算符调用方法

2024-04-27 21:07:22 发布

您现在位置:Python中文网/ 问答频道 /正文

当我们在类中定义一个方法时,如果我们试图使用class_name.method_name访问该方法,它会显示一个错误,要求为“self”提供一个参数。例如,prgm如下所示:

class a:
    def b(self):
        print('method b')
    def c(self):
        print('method c')
        a.b() #self.b()
d=a()
d.c()
a.c()  #d.c()

这里,在方法b内部和类外部,如果我使用类名a调用方法b,即a.c(),它会显示如下错误:

TypeError : b() missing 1 required positional argument: 'self' 

你能解释一下为什么它需要一个“self”参数,尽管我们在使用object调用它时不需要指定它吗


Tags: 方法nameself参数定义def错误required
1条回答
网友
1楼 · 发布于 2024-04-27 21:07:22

当使用对象调用方法时,self参数会自动作为调用对象传递

当您使用class调用它时,python无法理解调用对象是谁,因此self参数保持为空

class Foo:
    def bar(self):
        pass

f = Foo()
f.bar()
# or
Foo.bar(f)  # explicitly pass f to the self parameter for it to work

相关问题 更多 >