【发布时间】:2015-02-11 05:33:36
【问题描述】:
给定基于特征的类 Material-class、Base-class 和 Child-class(派生自 Base-class),如果 Child-class 的 Property-trait b 仅依赖于 a,则运行以下代码或x属性,即
b = Property(Float, depends_on=['a'])
或
b = Property(Float, depends_on=['x'])
但如果它依赖于两者则不是:
b = Property(Float, depends_on=['a','x'])
为什么?
from traits.api import HasTraits, DelegatesTo, Float, Instance, Range, Property
class Material(HasTraits):
a = Float(10)
class Base(HasTraits):
x = Float(-1)
class Child(Base):
m = Instance(Material)
a = DelegatesTo('m')
# b = Property(Float, depends_on=['a']) # <-- runs
# b = Property(Float, depends_on=['x']) # <-- runs
b = Property(Float, depends_on=['a','x']) # <-- fails
def _get_b(self):
return self.a * self.x
c = Child(m=Material())
【问题讨论】: