【问题标题】:Difference between using Properties or trait handlers to set dependent variable使用属性或特征处理程序设置因变量之间的区别
【发布时间】:2012-03-31 20:29:17
【问题描述】:

在 Python EPD Traits 中,我可以使用属性或处理“主”变量更改的方法中的操作来使依赖于其他变量的变量保持最新。

我在这里展示了两种方式,首先是一个属性:

from traits.api import HasTraits, Int, Property
class MyClass(HasTraits):
    val = Int
    dependent = Property(depends_on = 'val')

    def _get_dependent(self):
        return 4*self.val

现在有了一个特征处理程序:

from traits.api import HasTraits, Int
class MyClass(HasTraits):
    val = Int
    dependent = Int

    def _val_changed(self):
        self.dependent = 4*self.val

我的问题是,我应该什么时候使用什么?在研究这一点时,我意识到一个区别是,在使用属性的情况下,如果像这里这样设置,“因”变量将变为只读。但是比方说,依赖是真的依赖,我从来没有足够的知识来直接设置它,还有我应该注意的区别吗?

编辑:这类似于我的other Traits related question,但没有直接关系。

【问题讨论】:

    标签: python traits


    【解决方案1】:

    在这种情况下,我肯定会使用一个属性,因为dependent 实际上并没有任何你需要保留的有用状态,你只需要访问它。

    在某些情况下,第二种变体也很容易爆炸到您的脸上。想象一下,您有更多的依赖项,并且将来需要添加更多。每次根据val添加新成员时,您必须转到_val_changed并让新成员知道。另一方面,如果您将新成员创建为读取 val 的属性,则它与其他成员是分开的,并且每次添加依赖项时都不会弄乱代码。

    【讨论】:

    • 很抱歉延迟接受。那段时间我一定很忙……
    • Np。顺便说一句,这么长时间后我什至没有认出我的答案,我以为我的帐户是伪造的或什么的:D
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2014-08-22
    • 2010-10-31
    • 2018-05-10
    • 1970-01-01
    • 2017-03-03
    相关资源
    最近更新 更多