我有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
,然后它决定将使用哪个内部类,并用选定的内部类方法(DoXInSomeOtherWay.DoIt
或DoXInWay.DoIt
)重写{
一切都很好,我想要的是从ineer类中触发DoXJob.Finalize
,比如从DoXInSomeOtherWay.DoIt
或{DoXJob
方法调用更好,如:
obj = DoXJob(param1, param2)
obj.DoIt()
obj.Finalize()
不幸的是,python似乎没有办法引用封闭的实例。在
相反,在外部
__init__
中,您选择使用哪个内部类,并可能实例化它,则需要将外部对象的self
作为参数传递给内部类实例。在编辑:选择重新设计的主题-如果您可以简单地调用
DoIt
方法,然后等待它的返回,那么您可以在同一位置调用Finalize
(即调用者),从而避免了内部调用外部的需要。在相关问题 更多 >
编程相关推荐