Skip to main content
 首页 » 编程设计

python之直接引用时,是否可以在 Python 中创建表示另一种类型的类

2025年05月04日9birdshome

所以如果我有这样一个类:

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__ 以分别启用设置和删除属性(参见 the Python library documentation)。