두 클래스가 있습니다. 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
기본값을 사용하여 부모 클래스의 인스턴스를 만들면 출력이 정상입니다. age와 다른 값을 가진 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
이 문제를 해결하거나 더 좋은 방법으로 작성하는 방법에 대한 다른 아이디어가 있는지 궁금합니다. 많은 감사,
음이, 당신이 '슈퍼라는() .__ 초기화 __ (물건, year_born = 1900, ...)'. 너는 무엇을 기대 했는가 ?? – ForceBru
'super' 호출이 잘못되었습니다. –
감사합니다. @ pm-2ring __init __ (자기 이름, 성, 형제 = 0, 년령 = 1900, 나이 = get_age) __init __ (자기 이름, 성, 형제 = 0, 성년, 형제, 나이 = 하위 항목에 기본값 ( )이 있어야하지만 super() .__ init___이 포함되어 있지 않아야합니다. – user3177938