科学计算三维可视化---Traits(Property属性)

Posted ssyfj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了科学计算三维可视化---Traits(Property属性)相关的知识,希望对你有一定的参考价值。

Property属性

使用Property函数为类创建Property属性,Property属性用法和一般属性相同,但是他在获取值和赋值时会调用相应的方法
traits库也提供了Property属性
from traits.api import Property
from traits.api import Property,HasTraits,Float,cached_property

class rectangle(HasTraits):
    w = Float(1.0)
    h = Float(2.0)
    area = Property(depends_on=[w,h])   #当w,h任意一个发生改变时,都会触发属性函数
    #当我们读取area的时候,是当前_get_area方法的返回值,当我们设置area值时,会传递个人_set_area方法(不设置,则只是只读的)

    @cached_property    #返回值将会被缓存,除非w,h发生变化,否则就会一直使用这个缓存值,而不会多次调用_get_area值
    def _get_area(self):    #会根据属性名直接获得属性对应的方法
        print("computing...")
        return (self.w*self.h)

测试

>>> r = rectangle()
>>> r.area  #第一次获取值的时候会去调用_get_area方法
computing...  
2.0
>>> r.area  #再去调用会直接去缓存中获取
2.0
>>> r.area
2.0
>>> r.w = 5  #当我们修改w,或者h时,不会立即调用_get_area方法,会树立一个更新标识符,当我们再次获取area时,不会去缓存中获取,而是再次调用_get_area方法
>>> r.area
computing...
10.0

>>> r.edit_traits()
<traitsui.ui.UI object at 0x000000000CB9A048>
>>> computing...
computing...
computing...
computing...
computing...
computing...

>>> r.area
115.5

技术分享图片

当我们在GUI界面中修改w,h值时,系统会设置area的标志为重新计算,发现有对象在监听area值(GUI),
因此他会直接更新值,并通知所有监听对象 (修改一个,所有的对象值都会修改)

技术分享图片

 










以上是关于科学计算三维可视化---Traits(Property属性)的主要内容,如果未能解决你的问题,请参考以下文章

科学计算三维可视化---TraitsUI(View定义界面)

第一周三维可视之基础运用 测验 Python科学计算三维可视化

科学计算三维可视化---Mayavi可视化实例

科学计算三维可视化---TraitsUI(控件)

科学计算三维可视化---TraitsUI与Mayavi实例

科学计算三维可视化---TVTK入门(数据加载)