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

在python中向现有对象添加方法的任何优雅方法?

在python中向现有对象添加方法的任何优雅方法?

通常,当您使用点分访问查找对象字典时,存储在对象字典中的函数不会自动变为绑定方法

就是说,您可以使用functools.partial 预先绑定该函数并将其存储在对象字典中,以便可以像访问方法一样对其进行访问:

>>> from functools import partial
>>> class Dog:
        def __init__(self, name):
            self.name = name


>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> def bark(self):                 # normal function
        print('Woof! %s is barking' % self.name)

>>> e.bark = partial(bark, e)       # pre-bound and stored in the instance
>>> e.bark()                        # access like a normal method
Woof! Buddy is barking

这是将方法添加到现有对象的一种比较优雅的方法(无需更改其类并且不影响其他现有对象)。

您可以使用一个辅助函数添加预绑定函数,这是一个简单的步骤:

>>> def add_method(obj, func):
        'Bind a function and store it in an object'
        setattr(obj, func.__name__, partial(func, obj))

像这样使用它:

>>> add_method(e, bark)
>>> e.bark()
Woof! Fido is barking

希望这正是您需要的:-)

python 2022/1/1 18:48:31 有339人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

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

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

请先登录

推荐问题


联系我
置顶