调用覆盖超级方法两次以确保有效的状态/结果?

时间:2012-12-16 20:10:43

标签: python oop

我有2个类Child类,它继承自ParentParent类有一个名为getIt的方法,它使用属性param来计算某个值并将其返回。值可以是None。当Child类继承Parent时,它会覆盖getIt,这样如果getIt的返回值为None,则会将param更改为某个值肯定会返回None以外的值。因此,目标是永远不要让Child类的实例调用getIt返回None。这是我如何做到的

class Parent(object):
    def __init__(self, some_params):
        self.param = some_value
    def getIt(self):
        val = # use self.param to do some logic   
        if val == []:
            raise RuntimeError("message")   

class Child(Parent):
    def __init__(self, some_params):
        super(Child, self).__init__(some_params)
    def getIt(self):
        try:
            val = super(Child, self).getIt()
        except RuntimeError:
            self.param = some_other_value     # setting self.param to some_other_value will surely make getIt return a non empty list`
            val = super(Child, self).getIt()
        return val

有没有更好的方法呢?

0 个答案:

没有答案