我有两节课。其中Parent类具有一些默认值。
我希望Child类继承Parent类的init()方法以及默认值。

但是,当我尝试更改可选参数的值时,我做不到。
例如,在下面的代码中,我无法更改year_born的值。

def get_current_age(x):
    return 2017-x
get_age = get_current_age

class Parent():
    def __init__(self,name,last_name, siblings=0, year_born=1900, age=get_age):
        self.name = name
        self.last_name = last_name
        self.siblings = siblings
        self.year_born=year_born
        self._get_age = get_age(self.year_born)

class Child(Parent):
    def __init__(self,name,last_name, siblings=0, year_born=1900, age=get_age):
        super().__init__(name,last_name, siblings=0, year_born=1900, age=get_age)
        self.lives_with_parent= True
        self.stil_in_school= None


当我使用默认值创建Parent类的实例时,输出正常。当我创建一个使用不同年龄值的Child实例时,它仍然采用默认值。

Dad=Parent('Fyodr','Dosto')
print('Dad is' ,Dad._get_age)

kid = Child('Joseph','Dosto', year_born=2000)
print('Kid is' ,kid._get_age)

Dad is 117
Kid is 117


我不知道您是否有其他想法可以解决或以更好的方式编写它。
非常感谢,

最佳答案

在子类中更改此行:

super().__init__(name,last_name, siblings, year_born, age=get_age)

关于python - python继承类中的默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48025628/

10-16 09:03