我正在尝试创建代表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
对象关联的方法,正如我所料。我应该实施get
和set
方法吗?
答案 0 :(得分:0)
您期望A(p='/tmp')
应该做什么?
我可以告诉你要做什么但是如果你的代码是正确的话,这个陈述应该会失败TypeError
。您将使用字符串替换A
对象(以前是PathTrait
的实例)上的变量P而不是类型错误。
你要做的是在概念上混淆了。 File
是表示特征对象的类。从技术上讲,python允许你扩展这个对象,因为python的类型安全性很小,但这并不意味着你的python类现在突然就像一个特性。
要定义自定义特征,您需要使用专为Trait
构造函数等特征设计的工具。