traits简单介绍


traits class是个类模板,在不修改一个实体(通常是数据类型或常量)的前提下,把属性和方法关联到一个编译时的实体。在c++中的具体实现方式是:首先定义一个类模板,然后进行显式特化或进行相关类型的部分特化。

我的理解是:traits是服务于泛型编程的,其目的是让模板更加通用,同时把一些细节向普通的模板用户隐藏起来。当用不同的类型去实例化一个模板时,不可避免有些类型会存在一些与众不同的属性,若考虑这些特性的话,可能会导致形成的模板不够“泛型”或是过于繁琐,而traits的作用是把这些特殊属性隐藏起来,从而实现让模板更加通用。



traits:

   是从 PHP 5.4 加入的一种细粒度代码复用的语法。以下是官方手册对 Trait 的描述:

   Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。

   Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。

  说通俗一点,就是能把重复的方法拆分到一个文件,通过 use 引入以达到代码复用的目的。


好处:

    它不仅仅是可复用代码段的集合,它应该是一组描述了某个特性的的属性与方法的集合。它的优点再于随意组合,耦合性低,可读性高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Traitless Instance 是指一个没有任何trait属性的实例对象。在 Python 中,Traitless Instance 的使用可以通过定义一个空的 Trait 来实现。 下面是一个简单的示例代码: ```python from traits.api import HasTraits class EmptyClass(HasTraits): pass empty_instance = EmptyClass() ``` 在上面的代码中,我们定义了一个名为 EmptyClass 的,并通过继承 HasTraits 来为 EmptyClass 添加 Trait 功能。由于 EmptyClass 没有定义任何 Trait 属性,所以 empty_instance 实例对象就是一个 Traitless Instance。 Traitless Instance 的使用场景在某些情况下非常有用,例如当我们需要一个只包含方法的对象时,可以定义一个 Traitless Instance 来实现。同时,Traitless Instance 也可以作为 Trait 容器的一种选择,用于存储一组没有 Trait 属性的实例对象。 下面是一个示例代码,用于实现一个只包含方法的 Traitless Instance: ```python from traits.api import HasTraits, Int class MethodContainer(HasTraits): def method1(self): print('method1 called') def method2(self): print('method2 called') class EmptyClass(HasTraits): methods = MethodContainer() empty_instance = EmptyClass() empty_instance.methods.method1() # 输出 method1 called empty_instance.methods.method2() # 输出 method2 called ``` 在上面的代码中,我们定义了一个名为 MethodContainer 的,在该中定义了两个方法 method1 和 method2。然后,我们将 MethodContainer 实例作为 EmptyClass 中的方法容器,并通过 empty_instance 实例对象来调用 MethodContainer 中的方法。由于 MethodContainer 实例本身不包含 Trait 属性,因此 empty_instance 实例对象也是一个 Traitless Instance。 需要注意的是,Traitless Instance 在某些情况下可能会导致程序的行为不可预测,因此在使用时需要仔细考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值