当前位置:  开发笔记 > 编程语言 > 正文

是否有可能在直接引用时创建一个代表Python中另一种类型的类?

如何解决《是否有可能在直接引用时创建一个代表Python中另一种类型的类?》经验,为你挑选了1个好方法。

所以,如果我有一个类:

CustomVal

我希望能够表示一个文字值,所以就像在构造函数中设置它一样:

val = CustomVal ( 5 )

val.SomeDefaultIntMethod

基本上我希望CustomVal表示构造函数中指定的任何内容.

我不是在谈论知道如何处理CustomVal的自定义方法,而是将其作为我需要的另一个值.

这可能吗?

顺便说一下5只是一个例子,实际上它是一个我希望轻松实现的自定义COM类型.

因此,通过引用CustomVal,我将访问与int相关的功能(对于5),或者我想要表示的对象的功能(对于COM).

因此,如果COM对象是RasterizedImage,那么我将直接访问其方法:

CustomVal.Raster () ...

编辑:这就是我的意思:我不想作为属性访问,但对象本身:

CustomVal

代替:

CustomVal.SomeAttribute

我想要这个的原因是因为COM对象过于复杂而无法通过这种方式进行初始化,它看起来就像应用程序提供的原始内部实现.



1> dF...:

在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库文档).

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有