我有两节课。 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
我不知道你是否有任何关于如何解决这个问题或以更好的方式写它的想法。 非常感谢,
答案 0 :(得分:3)
在Child class中更改此行:
super().__init__(name,last_name, siblings, year_born, age=get_age)