在研究python类属性和实例属性时,我开始知道在对象方法之外创建对象属性是不可能的(或者可能是类方法).像下面的代码将在python中生成"NameError".
class test(object):
def __init__(self):
self.lst = []
self.str = 'xyz'
Run Code Online (Sandbox Code Playgroud)
为什么python不允许这样?我不是在质疑语言创造者的决定,而是背后的任何理由.比如,技术上是不正确的还是这种行为的任何其他缺点.
您正在定义一个类,因此没有实例指向外部方法.放弃自我:
class test(object):
def __init__(self):
self.lst = []
str = 'xyz'
Run Code Online (Sandbox Code Playgroud)
self指向实例,而不是类.您需要创建一个实例并直接分配给attributes(test().str = 'xyz'),或者您需要在方法内部(何时self可以实际引用实例).