【发布时间】:2012-01-16 10:02:11
【问题描述】:
我有 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()
【问题讨论】:
-
你为什么不删除内部,创建子类并重写你想要改变的方法?
-
或者,您可以对您似乎正在尝试做的事情采取更传统的方法,即策略模式。
-
@DonCallisto 没有太多东西需要使用子类化和继承。此外,内部类只会在基类中使用,所以遵循这种模式而不是子类化对我来说似乎更合乎逻辑。
-
直接从内部类调用
DoXJob.Finalize()。 -
@martineau:有什么例子?
标签: python class inner-classes