파이썬 상속
파이썬 상속
상속을 통해 다른 클래스의 모든 메서드와 속성을 상속하는 클래스를 정의할 수 있습니다.
부모 클래스 는 상속되는 클래스이며 기본 클래스라고도 합니다.
자식 클래스 는 파생 클래스라고도 하는 다른 클래스에서 상속되는 클래스입니다.
부모 클래스 만들기
모든 클래스는 상위 클래스가 될 수 있으므로 구문은 다른 클래스를 생성하는 것과 동일합니다.
예시
및 속성과 메서드 Person
를 사용하여
이라는 클래스를 만듭니다 .firstname
lastname
printname
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname,
self.lastname)
#Use the Person class to create an object, and then
execute the printname method:
x = Person("John", "Doe")
x.printname()
자식 클래스 만들기
다른 클래스의 기능을 상속하는 클래스를 만들려면 자식 클래스를 만들 때 부모 클래스를 매개 변수로 보냅니다.
예시
Student
클래스 에서 속성과 메서드를 상속할 이라는 클래스를 만듭니다 Person
.
class Student(Person):
pass
참고:pass
클래스에 다른 속성이나 메서드를 추가하지 않으려면 키워드를 사용하십시오 .
이제 Student 클래스는 Person 클래스와 동일한 속성 및 메서드를 갖습니다.
예시
클래스를 사용 Student
하여 개체를 만든 다음 printname
메서드를 실행합니다.
x = Student("Mike", "Olsen")
x.printname()
__init__() 함수 추가
지금까지 부모로부터 속성과 메서드를 상속하는 자식 클래스를 만들었습니다.
( 키워드 __init__()
대신) 함수를 자식 클래스 에 추가하고 싶습니다 .pass
참고: 이 __init__()
함수는 클래스를 사용하여 새 개체를 만들 때마다 자동으로 호출됩니다.
예시
클래스 에 __init__()
함수를
추가합니다 .Student
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
함수 를 추가하면 __init__()
자식 클래스는 더 이상 부모의 __init__()
기능을 상속하지 않습니다.
참고: 자식 __init__()
기능 은 부모 기능의 상속 보다 우선
__init__()
합니다 .
상위 함수 의 상속을 유지하려면 상위 __init__()
함수에 대한 호출을 추가합니다 __init__()
.
예시
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
이제 __init__() 함수를 성공적으로 추가하고 부모 클래스의 상속을 유지했으며 함수에 기능을 추가할 준비가 되었습니다
__init__()
.
super() 함수 사용
Python에는 또한 super()
자식 클래스가 부모로부터 모든 메서드와 속성을 상속하도록 하는 함수가 있습니다.
예시
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
이 super()
기능을 사용하면 상위 요소의 이름을 사용할 필요가 없으며 자동으로 상위 요소의 메서드와 속성을 상속합니다.
속성 추가
예시
클래스 에 호출 graduationyear
된
속성을 추가합니다 .Student
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear
= 2019
아래 예에서 연도 2019
는 변수여야 하며
Student
학생 개체를 생성할 때 클래스에 전달되어야 합니다. 그렇게 하려면 __init__() 함수에 다른 매개변수를 추가합니다.
예시
매개변수를 추가하고 year
개체를 생성할 때 올바른 연도를 전달합니다.
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
x = Student("Mike", "Olsen", 2019)
메소드 추가
예시
클래스 에 호출된 메서드를 추가합니다 welcome
.
Student
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
def welcome(self):
print("Welcome",
self.firstname, self.lastname, "to the class of", self.graduationyear)
부모 클래스의 함수와 이름이 같은 메서드를 자식 클래스에 추가하면 부모 메서드의 상속이 무시됩니다.