Python NameError:未定义名称类_uinit__;方法中的错误
我试图初始化一个实例,但每次都会抛出一个错误:Python NameError:未定义名称类_uinit__;方法中的错误,python,Python,我试图初始化一个实例,但每次都会抛出一个错误: import random class cGen: attributes = ['a','b','c'] def __init__(self): self.att = random.choice(attributes) 我可以很好地导入该类,但出现错误: c1=cGen() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“\xGen.py”,第288行,在__ self.att=random.choic
import random
class cGen:
attributes = ['a','b','c']
def __init__(self):
self.att = random.choice(attributes)
我可以很好地导入该类,但出现错误:
c1=cGen()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“\xGen.py”,第288行,在__
self.att=random.choice(属性)
NameError:未定义名称“属性”
这里缺少什么?
属性在类中定义,因此您需要通过类名引用它:
import random
class cGen:
attributes = ['a','b','c']
def __init__(self):
self.att = random.choice(cGen.attributes)
您将属性定义为类成员。然后必须通过self.attributes
在类内调用它。您还可以在\uuuu init\uuuu
中定义属性,并将生成的随机选择绑定到self.att
。但是只要['a',b',c']
是固定的(常量),这样做也可以;在\uuuu init\uuuu
内部,在封闭范围内查找未在本地定义的非限定名称,该范围是类
语句出现的范围,而不是类
语句的主体
您需要通过实例本身或实例的类型来查找该值
def __init__(self):
self.att = random.choice(self.attributes) # or type(self).attributes
如果列表是常量,只需执行self.att=random.choice(['a','b','c'])
@Tomerikoo,但数据将不会继承到其他类。