Python NameError:名称未定义
- 2025-01-13 08:53:00
- admin 原创
- 130
问题描述:
我有一个 python 脚本并且收到以下错误:
Traceback (most recent call last):
File "C:UsersTimDesktoppop-erp est.py", line 1, in <module>
s = Something()
NameError: name 'Something' is not defined
以下是导致问题的代码:
s = Something()
s.out()
class Something:
def out():
print("it works")
这是在 Windows 7 x86-64 下使用 Python 3.3.0 运行的。
为何找不到该Something
课程?
解决方案 1:
在使用之前先定义该类:
class Something:
def out(self):
print("it works")
s = Something()
s.out()
您需要将其self
作为第一个参数传递给所有实例方法。
解决方案 2:
请注意,有时你会希望在其自己的定义中使用类类型名称,例如在使用 Python Typing模块时,例如
class Tree:
def __init__(self, left: Tree, right: Tree):
self.left = left
self.right = right
这也将导致
NameError: name 'Tree' is not defined
这是因为此时类尚未定义。解决方法是使用所谓的前向引用,即将类名包装在字符串中,即
class Tree:
def __init__(self, left: 'Tree', right: 'Tree'):
self.left = left
self.right = right
解决方案 3:
您必须在创建类的实例之前定义该类。将的调用Something
移至脚本末尾。
您可以尝试本末倒置,在定义程序之前调用它们,但这将是一个丑陋的黑客行为,您必须按照此处的定义自行操作:
使 Python 文件中的函数定义与顺序无关
解决方案 4:
我得到了以下同样的错误:
NameError:名称“name”未定义
当我没有定义getter方法时,@property
而setter和deleter定义如下:
class Person:
def __init__(self, name):
self._name = name
# @property
# def name(self):
# return self._name
@name.setter
def name(self, name):
self._name = name
@name.deleter # Here
def name(self):
del self._name
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD