在同一类中定义之前使用另一个方法中的方法?

Using a method in another method before definition in same class?

提问人:Danish Mashkoor 提问时间:10/12/2021 最后编辑:WoodfordDanish Mashkoor 更新时间:10/13/2021 访问量:41

问:

此代码的工作原理:

def funct_a():
    funct_b()
    print("this is func a")

def funct_b():
    print("this is funct_b")

funct_a()

但事实并非如此,为什么?

class funct():
    def funct_a(self):
        funct_b()
        print("this is func a")
    def funct_b(self):
        print("this is funct b")
x = funct()
x.funct_a()

错误:

NameError: name 'funct_b' is not defined

为什么一个有效而另一个无效?如果我在另一个函数中使用一个未定义的函数,它可以完美地工作,但是如果我在另一个方法中使用未定义的方法,它会给我名称错误,为什么?

Python OOP 方法 命名空间

评论

3赞 dirck 10/12/2021
self.funct_b()?
0赞 Robin Sage 10/12/2021
请在此处发布整个回溯错误
0赞 dbc 10/12/2021
您能否编辑您的问题,以将您的代码和错误作为文本而不是屏幕截图包含?这里要求不要将图像用于此目的,请参阅不鼓励代码和/或错误的屏幕截图为什么在询问原因时不在 SO 上上传代码图像。如果你包括一个完整的最小可重现的例子(作为文本),准确地显示如何重现问题,你最有可能得到答案。请参阅:如何提问

答:

1赞 CasseroleBoi 10/12/2021 #1

为什么第一个代码有效?

因为当调用 funct_a() 时,funct_b已经定义好了

为什么第二个代码没有?

因为通过使用解释器搜索在类作用域之外定义的函数,而不是类方法。用funct_b()functself.funct_b()

P.S. 不要发布屏幕截图,而是粘贴代码