Python 3:NameError:name';函数名';没有定义

Python 3:NameError:name';函数名';没有定义,python,python-3.x,Python,Python 3.x,我是编程新手,我遇到了一个我找不到答案的问题。。。这就是: `class MyClass: def printsmth(): print("Hello") def main(): printsmth() if __name__ == '__main__':main()` 我得到一个错误,上面写着: Traceback (most recent call last): File "untitled.py", line 1, in <

我是编程新手,我遇到了一个我找不到答案的问题。。。这就是:

`class MyClass:
    def printsmth():
        print("Hello")
    def main():
        printsmth()
    if __name__ == '__main__':main()`
我得到一个错误,上面写着:

Traceback (most recent call last):
  File "untitled.py", line 1, in <module>
    class MyClass:
  File "untitled.py", line 6, in MyClass
    if __name__ == '__main__':main()
  File "untitled.py", line 5, in main
    printsmth()
NameError: name 'printsmth' is not defined
回溯(最近一次呼叫最后一次):
文件“untitled.py”,第1行,在
类别MyClass:
MyClass中第6行的文件“untitled.py”
如果uuuu name_uuuuuu=='uuuuuu main:main()
文件“untitled.py”,第5行,主
printsmth()
名称错误:未定义名称“printsmth”
包含的代码只是一个示例,但这与我在实际代码中遇到的错误是相同的,例如,如果我将代码从main()传输到ifname='main,那么它就可以完美地工作。问题是,我想在代码的某些部分重新启动main()方法,但我甚至没有这样做,因为我想不出解决此错误的方法:/你能帮我吗


p.S我试图将main()和ifname='main'从MyClass中移出,但没有成功。

您忘记将
self
作为方法的第一个参数传递。完成此操作后,可以调用
self.printsmth()
作为方法。现在它很混乱,因为您将它作为函数而不是方法调用

class MyClass:
    def printsmth(self):
        print("Hello")
    def main(self):
        self.printsmth()

-您需要熟悉基本的Python概念(在本例中是作用域)。这是我能想到的
类中未绑定函数的唯一原因。为了进一步的澄清,请遵循成千上万的python教程。