我有 c 类定义和该类的一些内部类定义:
class DoXJob():
def __init__(self, param1, param2):
<choose an inner class to use>
def DoIt(self):
pass
def Finalize(self):
<do finalization>
class DoXInSomeWay():
def __init__(self):
....
....
def DoIt(self):
...
class DoXInSomeOtherWay():
def __init__(self):
....
....
def DoIt(self):
...
逻辑很简单,我有一些内部类定义来处理工作,我调用DoXJob
使用一些参数,然后决定将使用哪个内部类,并覆盖DoXJob.DoIt
方法与所选内部类方法的方法(DoXInSomeOtherWay.DoIt
or DoXInWay.DoIt
)
obj = DoXJob(param1, param2)
obj.DoIt()
一切都很好,我想要的是触发DoXJob.Finalize
从内部类调用它,就像从DoXInSomeOtherWay.DoIt
or DoXInWay.DoIt
。但我不知道如何处理这个问题,也不知道这是否是正确的方法。或者更好地制作为DoXJob
方法调用如:
obj = DoXJob(param1, param2)
obj.DoIt()
obj.Finalize()
不幸的是,python 似乎没有办法引用封闭的实例。
相反,在你的外在__init__
在您选择要使用哪个内部类并可能实例化它的地方,您将需要传递外部对象的self
作为内部类实例的参数。
编辑:选择重新设计的主题 - 如果你可以简单地调用DoIt
方法,然后等待它的返回,然后就可以调用Finalize
在同一个地方(即调用者),从而避免内部调用外部的需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)