2017-10-30 15 views
0
class Wolf: 
    def __init__(self, legs): 
     self.legs = 4 
class Dog(Wolf): 
    def __init__(self, color): 
     self.color = color 
fido = Dog(legs = 4, color = "brown") 

이렇게하면 오류 메시지가 출력됩니다. 수퍼 클래스와 관련이없는 하위 클래스에 매개 변수를 추가하는 경우 어떻게해야합니까?Python 3의 하위 클래스에 인수를 추가하는 방법

+0

, 늑대의'init'에서 : 당신은 명시 적으로 하위 클래스의 생성자에서 원하는 매개 변수를 적용하고 슈퍼 클래스의 생성자로에 통과해야합니다 ('legs' 이후)'늑대 (wolf) '가 주장을 취할 수는 있지만 아무것도하지 않습니다. – numbermaniac

답변

0

당신은 여전히 ​​Dog의 다리 인수에 전달해야하고 super 사용 : 여기

class Wolf: 
    def __init__(self, legs): 
     self.legs = 4 
class Dog(Wolf): 
    def __init__(self, legs, color): 
     super().__init__(legs) 
     self.color = color 
fido = Dog(legs=4, color="brown") 
1

이가 시도 이것을하기 위해. 이 튜토리얼에서이 유사한 예에서와 같이 부모 클래스의 초기화 함수를 호출해야합니다

상속 작동하는 방법이 아니다
class Pet(object): 

    def __init__(self, name, species): 
     self.name = name 
     self.species = species 

    def getName(self): 
     return self.name 

    def getSpecies(self): 
     return self.species 

    def __str__(self): 
     return "%s is a %s" % (self.name, self.species) 


class Dog(Pet): 

    def __init__(self, name, chases_cats): 
     Pet.__init__(self, name, "Dog") 
     self.chases_cats = chases_cats 

    def chasesCats(self): 
     return self.chases_cats 
0

상속을 설명하고 방법을 보여줍니다 tutorial에서 예제 :

class Wolf: 
    def __init__(self, legs): 
     self.legs = 4 
class Dog(Wolf): 
    def __init__(self, color, legs): 
     super().__init__(legs) 
     self.color = color 
fido = Dog(legs = 4, color = "brown") 
0

. 다른 클래스에서 상속을 받으면 수퍼 클래스의 매개 변수는 자동으로 하위 클래스의 매개 변수 목록에 추가되지 않습니다. 인수의 목록에 **`추가 kwargs`을 당신은 할 수

class Wolf: 
    def __init__(self, legs): 
     self.legs = 4 

class Dog(Wolf): 
    def __init__(self, color, legs): 
     super().__init__(legs) 
     self.color = color 

fido = Dog(legs = 4, color = "brown")