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对象的框架可能正在改变对象本身的底层表示形式。这可能会导致普通赋值无效。您应该阅读的文档以了解如何做到这一点。也许您可以将每个链接的相关部分添加到您的答案中?也许您可以将每个链接的相关部分添加到您的答案中?谢谢您的答案。谢谢您的答案。