Python Can';t在继承自Atom api的类中创建变量

Python Can';t在继承自Atom api的类中创建变量,python,Python,当我从Atom.api继承Atom时,我无法创建成员变量 什么机制可以解释这一点 from atom.api import Atom class A: def init(self): self.var = 0 class B(Atom): def init(self): self.var = 0 a = A() a.init() b = B() b.init() 当执行b.init()时,我得到错误消息: AttributeError:'

当我从
Atom.api
继承
Atom
时,我无法创建成员变量

什么机制可以解释这一点

from atom.api import Atom

class A:
    def init(self):
        self.var = 0

class B(Atom):
    def init(self):
        self.var = 0

a = A()
a.init()

b = B()
b.init()
当执行
b.init()
时,我得到错误消息:

AttributeError:'B'对象没有属性'var'


原子已经覆盖了描述符。它们负责使用getter(
self.x
)和setter(
self.x=42
)的不同行为。这就是你犯错误的原因。欲了解更多信息,请阅读:

1) 关于Python中的描述符:


2) 关于Atom框架:

Atom已覆盖描述符。它们负责使用getter(
self.x
)和setter(
self.x=42
)的不同行为。这就是你犯错误的原因。欲了解更多信息,请阅读:

1) 关于Python中的描述符:


2) 关于Atom框架:

像声明类的静态成员一样声明变量

class B(Atom):

    var = Range(low=0)

    def init(self):
        self.var = 0

然后,atom将它视为有效的类字段。

声明变量,就像声明类的静态成员一样

class B(Atom):

    var = Range(low=0)

    def init(self):
        self.var = 0

然后,atom将把它视为一个有效的类字段。

我想说,atom作为创建内存高效Python对象的
框架,很可能正在改变对象本身的底层表示形式。这可能会导致普通赋值无效。您应该阅读的文档来了解它是如何实现的。我想说,atom作为创建内存高效Python对象的
框架可能正在改变对象本身的底层表示形式。这可能会导致普通赋值无效。您应该阅读的文档以了解如何做到这一点。也许您可以将每个链接的相关部分添加到您的答案中?也许您可以将每个链接的相关部分添加到您的答案中?谢谢您的答案。谢谢您的答案。