所以,如果我有一个类:
CustomVal
我希望能够表示一个文字值,所以就像在构造函数中设置它一样:
val = CustomVal ( 5 ) val.SomeDefaultIntMethod
基本上我希望CustomVal表示构造函数中指定的任何内容.
我不是在谈论知道如何处理CustomVal的自定义方法,而是将其作为我需要的另一个值.
这可能吗?
顺便说一下5只是一个例子,实际上它是一个我希望轻松实现的自定义COM类型.
因此,通过引用CustomVal,我将访问与int相关的功能(对于5),或者我想要表示的对象的功能(对于COM).
因此,如果COM对象是RasterizedImage,那么我将直接访问其方法:
CustomVal.Raster () ...
编辑:这就是我的意思:我不想作为属性访问,但对象本身:
CustomVal
代替:
CustomVal.SomeAttribute
我想要这个的原因是因为COM对象过于复杂而无法通过这种方式进行初始化,它看起来就像应用程序提供的原始内部实现.
在Python中包装对象的常用方法是__getattr__
在类中覆盖:
class CustomVal(object): def __init__(self, value): self.value = value def __getattr__(self, attr): return getattr(self.value, attr)
那么你就可以做到
>>> obj = CustomVal(wrapped_obj) >>> obj.SomeAttributeOfWrappedObj
您还可以分别覆盖__setattr__
和__delattr__
启用设置和删除属性(请参阅Python库文档).