从多重继承构建的自定义Trait

时间:2015-06-10 15:20:30

标签: python enthought traits

我正在尝试创建代表custom trait对象的unipath.Path。重新使用File特性提供的机制似乎是有利的,所以我的想法是使用多重继承。

from unipath import Path
from traits import File

class PathTrait(Path,File):
    pass

class A(HasTraits):
    p = PathTrait()

但是,当我通过A(p='/tmp/')使用此内容时,A.p没有任何与Path对象关联的方法,正如我所料。我应该实施getset方法吗?

1 个答案:

答案 0 :(得分:0)

您期望A(p='/tmp')应该做什么?

我可以告诉你要做什么但是如果你的代码是正确的话,这个陈述应该会失败TypeError。您将使用字符串替换A对象(以前是PathTrait的实例)上的变量P而不是类型错误。

你要做的是在概念上混淆了。 File是表示特征对象的类。从技术上讲,python允许你扩展这个对象,因为python的类型安全性很小,但这并不意味着你的python类现在突然就像一个特性。

要定义自定义特征,您需要使用专为Trait构造函数等特征设计的工具。