본문 바로가기
파이썬

파이썬 __init__를 사용한 속성 상속

by º기록 2020. 9. 19.
반응형

저는 파이썬을 배우기 시작한 Java 사람입니다. 이 예를 보자 :

class Person():
    def __init__(self, name, phone):
        self.name = name
        self.phone = phone

class Teenager(Person):
    def __init__(self, name, phone, website):
        self.name=name
        self.phone=phone
        self.website=website

많은 중복 코드가 있다고 확신합니다 (Java에서는 위의 코드에 대해 많은 중복이 있음을 알고 있습니다).

부모 클래스에서 이미 상속 된 속성과 관련하여 중복되는 부분은 무엇입니까?

 

해결 방법

 

파이썬에서 클래스에 대한 __ init __ 함수를 작성할 때 항상 수퍼 클래스의 __ init __ 함수를 호출해야합니다. 이를 사용하여 관련 속성을 수퍼 클래스에 직접 전달할 수 있으므로 코드는 다음과 같습니다.

class Person(object):
    def __init__(self, name, phone):
        self.name = name
        self.phone = phone
class Teenager(Person):
    def __init__(self, name, phone, website):
        Person.__init__(self, name, phone)
        self.website=website

다른 사람들이 지적했듯이 줄을 바꿀 수 있습니다.

Person.__init__(self, name, phone)

super(Teenager, self).__init__(name, phone)

코드는 똑같은 일을 할 것입니다. 이는 파이썬에서 instance.method (args) Class.method (instance, args) 의 약어이기 때문입니다. super 를 사용하려면 내 코드에서 수행 한 것처럼 Person 의 기본 클래스로 object 를 지정해야합니다.


 

참조 페이지 https://stackoverflow.com/questions/8853966

 

 

반응형

댓글