python - 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 给出警告说“方法没有参数”)
解决方案
正确的用法是:
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)
。
推荐阅读
- java - Apache Spark:java.lang.NoClassDefFoundError V2TableWithV1Fallback
- python-3.x - 对于大量边,如何在有向无环图中迭代从根节点到叶节点的每条路径
- php - 在 wordpress 主页外创建 1 个分页
- api - 什么是第一方 API?
- python - 如何获得1到0之间实数的输出情感分数?
- sql - SQL 错误 [42703]:错误:列“percent_population_infected”不存在
- java - Eclipse Java 中的错误 - 线程“AWT-EventQueue-0”中的异常
- python - 试图告诉我有关我的字典的 pylance 下标错误是什么?
- java - Spring Batch:如何识别导致性能下降的java方法和SQL查询?
- python - 是否可以将 event.key 设置为变量?