Python 상속

Python 상속

이를 통해 다른 클래스의 모든 메서드와 속성을 继承할 수 있는 클래스를 정의할 수 있습니다。

부모 클래스이를 继承한 클래스로,기본 클래스라고도 합니다。

자식 클래스다른 클래스에서 继承된 클래스로,도입 클래스라고도 합니다。

부모 클래스 생성

모든 클래스는 부모 클래스로 사용될 수 있으며, 따라서 생성 문법은 다른 모든 클래스와 동일합니다:

인스턴스

이름을 Person으로 하는 클래스를 생성하며, firstname과 lastname 속성 및 printname 메서드를 포함합니다:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.firstname = fname
  self.lastname = lname
    def printname(self):
print(self.firstname, self.lastname)
# Person을 사용하여 객체를 생성하고 printname 메서드를 실행하세요:
x = Student("Elon", "Musk")

예제 실행

x = Person("Bill", "Gates")

서브 클래스 생성

인스턴스

기타 클래스에서 기능을 继承하는 클래스를 생성하려면, 서브 클래스를 생성할 때 부모 클래스를 매개변수로 전달하세요:

class Student(Person):
  pass

부모 클래스의 __init__() 함수를 继承하려면 부모 클래스의 __init__() 함수를 호출하는 것을 추가하세요:Student 클래스를 생성하여 Person 클래스에서 속성과 메서드를 继承하도록 합니다: pass 이 클래스에 추가하고 싶은 다른 속성이나 메서드가 없다면, 사용하세요:

키워드.

인스턴스

이제, Student 클래스는 Person 클래스와 동일한 속성과 메서드를 가지고 있습니다.

Student 클래스를 사용하여 객체를 생성하고 printname 메서드를 실행하세요:
x = Student("Elon", "Musk")

예제 실행

x.printname()

__init__() 함수를 추가하려면

현재까지, 우리는 부모 클래스의 속성과 메서드를 继承하는 서브 클래스를 생성했습니다. __init__() 함수를 자식 클래스에 추가하면 됩니다. pass 키워드)

부모 클래스의 __init__() 함수를 继承하려면 부모 클래스의 __init__() 함수를 호출하는 것을 추가하세요:클래스를 사용하여 새 객체를 생성할 때마다 자동으로 __init__() 함수가 호출됩니다.

인스턴스

Student 클래스에 __init__() 함수를 추가하세요:

class Student(Person):
  def __init__(self, fname, lname):
    # 속성 추가 등

자식 클래스는 부모 클래스의 __init__() 함수를 더 이상 继承하지 않습니다.

부모 클래스의 __init__() 함수를 继承하려면 부모 클래스의 __init__() 함수를 호출하는 것을 추가하세요:주석:

자식의 __init__() 함수는 부모의 __init__() 함수의 继承을 덮어쓰습니다.

인스턴스

class Student(Person):
  def __init__(self, fname, lname):
    부모의 __init__() 함수를 继承하려면 부모의 __init__() 함수를 호출하는 것을 추가하세요:

예제 실행

Person.__init__(self, fname, lname)

지금까지, 우리는 __init__() 함수를 성공적으로 추가하고 부모 클래스의 继承을 유지했습니다. 이제 __init__() 함수에 기능을 추가할 준비가 되었습니다.

super() 함수를 사용하는 방법이 있습니다. super() Python에는 또 다른

인스턴스

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 객체를 생성할 때 Student 클래스에 전달되어야 합니다. 이를 위해 __init__() 함수에 다른 파라미터를 추가하십시오:

인스턴스

추가 year 파라미터를 추가하고, 객체를 생성할 때 올바른 연도를 전달하십시오:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year
x = Student("Elon", "Musk", 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)

예제 실행

안내:자식 클래스에서 부모 클래스의同名 함수와 같은 메서드를 추가하면 부모 메서드를 상속하게 됩니다.