首页 > 解决方案 > NameError: name 'self' is not defined 解释

问题描述

我试图了解“自我”是如何工作的。在第一个代码中,我得到了错误,但我相信我做的一切都是正确的。在那之后,我尝试了更多的东西来解决它,但不能。我在这里想念什么?

class myClass:
    def foo(self):
            print('WORKED')
    self.foo()

NameError:名称“自我”未定义


class myClass:
    def foo(self):
            print('WORKED')
    foo()

类型错误:foo() 缺少 1 个必需的位置参数:'self'


   class myClass:
       def foo():
               print('WORKED')
       foo()
   myClass.foo() 

工作过

(在这里 pylint 给出警告说“方法没有参数”)


标签: pythonpython-3.x

解决方案


正确的用法是:

class MyClass:
    def foo(self):
        print('WORKED')

    def bar(self):
        self.foo()


obj = MyClass()
obj.bar()

您必须使用参数定义方法self。它会像obj调用时一样自动传递obj.foo()。即,obj.foo()等价于MyClass.foo(obj)


推荐阅读