在另一个类中定义一个类并调用父方法

时间:2012-01-16 10:02:12

标签: python class inner-classes

我有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.DoItDoXInWay.DoIt

的方法
obj = DoXJob(param1, param2)
obj.DoIt()

一切都很好,我想要的是从ineer类中触发DoXJob.Finalize,比如从DoXInSomeOtherWay.DoItDoXInWay.DoIt调用它。但我不知道如何处理这个,以及它是否是正确的方法。或者更好地将DoXJob方法调用为:

obj = DoXJob(param1, param2)
obj.DoIt()
obj.Finalize()

1 个答案:

答案 0 :(得分:2)

不幸的是,python似乎没有办法引用封闭的实例。

相反,在你的外部__init__中,你选择使用哪个内部类,并且可能实例化它,你需要将外部对象的self作为参数传递给内部类实例。 / p>

编辑:挑选重新设计的主题 - 如果您只需调用DoIt方法,然后等待其返回,那么您可以在同一个地方调用Finalize(来电者,即是),因此避免了内部呼唤外部的需要。