0

我有 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

有没有更好的方法来做到这一点?

4

0 回答 0