【发布时间】:2015-10-29 14:03:06
【问题描述】:
from traits.api import Str
class Foo(HasTraits):
a=Str
b=Str()
成员 'a' 和 'b' 之间是否有任何行为差异?
特质属性总是特定于实例还是可以是类成员?
【问题讨论】:
标签: python-2.7 enthought traitsui
from traits.api import Str
class Foo(HasTraits):
a=Str
b=Str()
成员 'a' 和 'b' 之间是否有任何行为差异?
特质属性总是特定于实例还是可以是类成员?
【问题讨论】:
标签: python-2.7 enthought traitsui
没有区别。 MetaHasTraits(HasTraits 背后的元类)将愉快地使用任何一种形式,并在没有参数的情况下隐式实例化前者。
特征属性始终是实例属性,而不是类属性。
【讨论】:
add_class_trait() 是一个@classmethod,它将向一个类添加一个特征,这样该类的所有实例现在都将该特征作为实例属性。这与add_trait() 形成对比,instancemethod 仅将特征添加到您调用它的实例而不是同一类的其他实例。在任何一种情况下,特征定义一个实例属性而不是类属性。