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

标签 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()

最佳答案

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

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

编辑:拿起重新设计的主题 - 如果您可以简单地调用 DoIt 方法,然后等待它返回,那么您可以在同一时间调用 Finalize放置(调用者,即),从而避免内部调用外部的需要。

关于python - 在另一个类中定义一个类并调用父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8878344/

相关文章:

python - 使用 Python ijson 增量读取顶级 JSON 字典

python - 结合两个 matplotlib 颜色图

c++ - 返回泛型类的引用

C#,对象问题

java - 使用 Jackson Mapper 有选择地将 JSON 数据的一部分映射到嵌套类

java - 静态嵌套类不初始化外部类

java - java中最终局部变量的范围

python - 整个图像在屏幕上的移动

php - 调用非对象的成员函数

python - 如何在 Python Django 中运行单元测试时禁用日志记录?