您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

动态地将方法附加到使用swig生成的现有Python对象上?

动态地将方法附加到使用swig生成的现有Python对象上?

如果创建包装器类,则它将与其他任何内置类一起使用。这称为“包含和委派”,它是继承的一种常见替代方法

class SuperDuperWrapper(object):
    def __init__(self, origobj):
        self.myobj = origobj
    def __str__(self):
        return "SUPER DUPER " + str(self.myobj)
    def __getattr__(self,attr):
        return getattr(self.myobj, attr)

__getattr__方法会将SuperDuperWrapper对象上的所有未定义属性请求委托给包含的myobj对象。实际上,考虑到Python的动态类型,您可以使用此类来SuperDuper’ly包装几乎所有内容

s = "hey ho!"
sds = SuperDuperWrapper(s)
print sds

i = 100
sdi = SuperDuperWrapper(i)
print sdi

印刷品:

SUPER DUPER hey ho!
SUPER DUPER 100

在您的情况下,您将从无法修改函数获取返回的对象,并将其包装在您自己的SuperDuperWrapper中,但是您仍然可以以其他方式访问它,就像它是基础对象一样。

print sds.split()
['hey', 'ho!']
python 2022/1/1 18:28:36 有414人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶