这可能是一个糟糕的想法(如果是的话,请告诉我),但我正在探索Python的边界,我可以看到这有多有用(事实上,我现在正在寻找一个可能的例子)。在
设置如下:
---(API文件)---
class APINode(object):
def __init__(self, *args, **kwargs):
# initialize some instance variables
def render(self, arg1, arg2):
# do some stuff and return something
def api_function( arg1, arg2 ):
# do some stuff
return APINode(args, kwargs)
---(我的文件)--
^{pr2}$我想稍微修改api_函数的输出,基本上只是覆盖它返回的对象中的render函数。我觉得我的选择是:(1,糟糕)将api_函数的内容复制到my_函数中,但只需构造并返回MyNode而不是APINode,或者(2,也许?)要从my_函数调用api_函数,让它完成它的工作——构造并返回一个APINode类型的对象,然后我可以从该对象创建一个MyNode,以便覆盖该方法。在
它可以归结为:在Python中,是否可以从父类的实例构造子类的实例?在
(看起来很眼熟,或者想知道实际情况是什么?我正在尝试扩展Django模板标记。)
我想你会更喜欢MyNode包装APINode,而不是扩展它。您可以实现自己的render()方法,并将所有其他方法委托给包装好的APINode。然后就可以从现有的APINode创建一个新的MyNode。在
无法从父实例生成子实例。父实例是APINode的实例,不能更改对象的类。在
别在家里这样做。在
猴子修补API!在
^{pr2}$这仍然可能导致很难找到bug,但它更干净一些。在
重写分配器。在
相关问题 更多 >
编程相关推荐