我有 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
或 DoXInWay.DoIt
)
obj = DoXJob(param1, param2)
obj.DoIt()
一切都很好,我想要的是从 ineer 类中触发 DoXJob.Finalize
,就像从 DoXInSomeOtherWay.DoIt
或 DoXInWay.DoIt 中调用它一样
。但我不知道如何处理这个问题,这是否是正确的方法。还是作为 DoXJob
方法调用更好:
obj = DoXJob(param1, param2)
obj.DoIt()
obj.Finalize()
最佳答案
不幸的是,python 似乎没有办法引用封闭实例。
相反,在您选择要使用的内部类并可能实例化它的外部 __init__
中,您需要将外部对象的 self
作为参数传递给内部类实例。
编辑:拿起重新设计的主题 - 如果您可以简单地调用 DoIt
方法,然后等待它返回,那么您可以在同一时间调用 Finalize
放置(调用者,即),从而避免内部调用外部的需要。
关于python - 在另一个类中定义一个类并调用父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8878344/