산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 상속

파이썬 상속

상속을 통해 부모 클래스에서 모든 기능을 가져오고 더 추가할 수 있는 클래스를 정의할 수 있습니다. 이 자습서에서는 Python에서 상속을 사용하는 방법을 배웁니다.

동영상:Python 상속

Python의 상속

상속은 객체 지향 프로그래밍의 강력한 기능입니다.

기존 클래스를 거의 또는 전혀 수정하지 않고 새 클래스를 정의하는 것을 말합니다. 새 클래스를 파생(또는 자식) 클래스라고 합니다. 상속되는 클래스를 기본(또는 상위) 클래스라고 합니다. .

<시간>

Python 상속 구문

class BaseClass:
  Body of base class
class DerivedClass(BaseClass):
  Body of derived class

파생 클래스는 새 기능을 추가할 수 있는 기본 클래스의 기능을 상속합니다. 그 결과 코드를 재사용할 수 있습니다.

<시간>

Python에서 상속의 예

상속 사용을 설명하기 위해 예를 들어보겠습니다.

다각형은 3개 이상의 변이 있는 닫힌 도형입니다. Polygon라는 클래스가 있다고 가정해 보겠습니다. 다음과 같이 정의됩니다.

class Polygon:
    def __init__(self, no_of_sides):
        self.n = no_of_sides
        self.sides = [0 for i in range(no_of_sides)]

    def inputSides(self):
        self.sides = [float(input("Enter side "+str(i+1)+" : ")) for i in range(self.n)]

    def dispSides(self):
        for i in range(self.n):
            print("Side",i+1,"is",self.sides[i])

이 클래스에는 n의 면 수를 저장하는 데이터 속성이 있습니다. sides라는 목록으로 각 측면의 크기 .

inputSides() 메서드는 각 측면의 크기와 dispSides()를 취합니다. 이 측면 길이를 표시합니다.

삼각형은 변이 3개인 다각형입니다. 따라서 Triangle이라는 클래스를 만들 수 있습니다. Polygon에서 상속 . 이렇게 하면 Polygon의 모든 속성이 Triangle에 사용할 수 있는 클래스 수업.

다시 정의할 필요가 없습니다(코드 재사용성). 삼각형 다음과 같이 정의할 수 있습니다.

class Triangle(Polygon):
    def __init__(self):
        Polygon.__init__(self,3)

    def findArea(self):
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = (a + b + c) / 2
        area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
        print('The area of the triangle is %0.2f' %area)

그러나 클래스 Triangle 새로운 메소드 findArea()가 있습니다. 삼각형의 면적을 찾아 인쇄합니다. 다음은 샘플 실행입니다.

>>> t = Triangle()

>>> t.inputSides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4

>>> t.dispSides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0

>>> t.findArea()
The area of the triangle is 6.00

inputSides()와 같은 메소드를 정의하지 않았음에도 불구하고 볼 수 있습니다. 또는 dispSides() Triangle 클래스용 별도로 사용할 수 있었습니다.

속성이 클래스 자체에서 발견되지 않으면 검색은 기본 클래스로 계속됩니다. 이는 기본 클래스가 다른 클래스에서 파생된 경우 재귀적으로 반복됩니다.

<시간>

Python에서 메서드 재정의

위의 예에서 __init__() 메소드가 두 클래스 모두에서 정의되었습니다. Triangle 다각형 . 이 경우 파생 클래스의 메서드가 기본 클래스의 메서드를 재정의합니다. 즉, __init__() 삼각형 __init__보다 우선 적용됩니다. 다각형 .

일반적으로 기본 메서드를 재정의할 때 단순히 정의를 대체하기보다 확장하는 경향이 있습니다. 파생 클래스의 메서드에서 기본 클래스의 메서드를 호출하여 동일한 작업이 수행됩니다(Polygon.__init__() 호출). __init__()에서 Triangle에서 ).

더 나은 옵션은 내장 함수 super()를 사용하는 것입니다. . 따라서 super().__init__(3) Polygon.__init__(self,3)과 동일합니다. 및 선호됩니다. super()에 대해 자세히 알아보려면 Python에서 함수를 보려면 Python super() 함수를 방문하십시오.

두 개의 내장 함수 isinstance()issubclass() 상속을 확인하는 데 사용됩니다.

함수 isinstance() True 반환 객체가 클래스의 인스턴스이거나 그로부터 파생된 다른 클래스인 경우. Python의 모든 클래스는 기본 클래스 object에서 상속됩니다. .

>>> isinstance(t,Triangle)
True

>>> isinstance(t,Polygon)
True

>>> isinstance(t,int)
False

>>> isinstance(t,object)
True

마찬가지로 issubclass() 클래스 상속을 확인하는 데 사용됩니다.

>>> issubclass(Polygon,Triangle)
False

>>> issubclass(Triangle,Polygon)
True

>>> issubclass(bool,int)
True

python

  1. 파이썬 데이터 유형
  2. 파이썬 연산자
  3. 파이썬 통과 문
  4. 파이썬 사전
  5. Python 사용자 정의 예외
  6. 파이썬 객체 지향 프로그래밍
  7. 파이썬 연산자 오버로딩
  8. 파이썬 @property 데코레이터
  9. 예제가 있는 Python의 type() 및 isinstance()
  10. C# - 상속