【发布时间】:2017-08-18 07:21:42
【问题描述】:
Python 3.6
我正在尝试修改第三方库的行为。
我不想直接改源码。
考虑以下代码:
class UselessObject(object):
pass
class PretendClassDef(object):
"""
A class to highlight my problem
"""
def do_something(self):
# Allot of code here
result = UselessObject()
return result
我想用我自己的班级代替UselessObject
我想知道在我的模块中使用元类来拦截UselessObject 的创建是否有效?
编辑
This Ashwini Chaudhary 就同一问题发布的答案可能对其他人有用。以及下面的答案。
附:我还发现“模块”级别 __metaclass__ 在 python 3 中不起作用。所以我最初的问题是“作为一个有效的想法”是错误的
【问题讨论】:
-
为什么不只是
import that_library; that_library.UselessObject = MyOwnObject? -
this 之类的东西可能会有所帮助。
-
甜蜜!不知道你能做到! @Ashwini Chaudhary- 是的答案,该帖子更好地描述了我的问题
-
@Rawing,是的,这是个好主意!
-
给出的答案可以——但我们应该注意这与“元类”无关——这被称为“猴子补丁”。
标签: python metaclass monkeypatching