这可能是一个糟糕的想法(如果是,请随意告诉我),但我正在探索Python的边界,我可以看到它如何有用(事实上,我现在正在考虑潜在的案例)。
以下是设置信息:
我希望稍微修改api_function的输出,基本上只是覆盖它返回的对象中的render函数。我觉得我的选项有:(1)复制api_function的内容到my_function中,但是构造并返回一个MyNode而不是APINode;或者(2)从my_function中调用api_function,让它完成工作——构造并返回一个APINode类型的对象,然后我可以从该对象中创建一个MyNode以覆盖那个方法。
归根结底:在Python中,是否可能从父类的实例构造子类的实例?
(看起来很熟悉或想知道实际情况是什么?我正在尝试扩展Django模板标签。)
以下是设置信息:
---(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)
---- (我的文件)----
class MyNode(APINode):
def render(self, arg1, arg2):
#My override of APINode's render
def my_function( arg1, arg2 ):
api_parent_instance = api_function( arg1, arg2 )
#Can I some how create an instance of MyNode from api_parent_instance here?
我希望稍微修改api_function的输出,基本上只是覆盖它返回的对象中的render函数。我觉得我的选项有:(1)复制api_function的内容到my_function中,但是构造并返回一个MyNode而不是APINode;或者(2)从my_function中调用api_function,让它完成工作——构造并返回一个APINode类型的对象,然后我可以从该对象中创建一个MyNode以覆盖那个方法。
归根结底:在Python中,是否可能从父类的实例构造子类的实例?
(看起来很熟悉或想知道实际情况是什么?我正在尝试扩展Django模板标签。)