Python의 상속 유형 | Python 상속 [예제 포함]

게시 됨: 2021-02-09

목차

소개

깨끗한 코드를 위한 투쟁은 모든 프로그래머가 참여하는 전투입니다. 그리고 그 전투는 객체 지향 프로그래밍 개념의 적절한 갑옷으로 정복될 수 있습니다. 그리고 OOP 개념의 적절한 활용은 코드 재사용성, 가독성, 최적의 시간 및 공간 복잡성을 개선하는 데 도움이 됩니다.

파이썬 코딩은 정말 재미있습니다. 엄청난 수의 라이브러리 지원, 객체 지향, GUI 프로그래밍 기능이 있어 모든 프로그래밍 언어 중에서 핫케이크가 됩니다.

상속은 가장 많이 활용되는 객체 지향 기능 중 하나이며 파이썬으로 구현하는 것은 열정적인 작업입니다. 자, 이제 시작하겠습니다!

먼저 상속의 정의를 이해합시다.

계승

상속은 다른 클래스의 속성과 특성(변수와 메소드)을 얻는 과정이다. 이 계층적 순서에서 다른 클래스를 상속하는 클래스를 하위 클래스 또는 자식 클래스라고 하고 다른 클래스를 부모 클래스라고 합니다.

상속은 따르는 계층과 관련된 상위 클래스 및 하위 클래스의 수에 따라 분류됩니다.

상속에는 다섯 가지 유형이 있습니다.

  1. 단일 상속
  2. 다중 상속
  3. 다단계 상속
  4. 계층적 상속
  5. 하이브리드 상속

단일 상속

이러한 유형의 상속을 통해 하위 클래스 또는 파생 클래스가 상위 클래스의 속성 및 특성을 상속할 수 있으므로 코드 중복을 방지하고 코드 재사용성을 향상할 수 있습니다.

#부모클래스
의 클래스 :
나는 = 5
def fun1 (자신):
print( "안녕하세요, 당신은 상위 클래스에 있습니다" )

#아강
아래 (위) 클래스 :
나는 = 10
def fun2 (자신):
print( "안녕하세요, 당신은 하위 클래스에 있습니다" )

temp1=이하()
temp2=위()
temp1.fun1()
temp1.fun2()
temp2.fun1()
인쇄(temp1.i)
인쇄(temp2.i)
#temp2.fun2()

자, 위의 코드를 살펴보겠습니다.

위의 코드에서 "Above"는 부모 클래스이고 "Below"는 부모 클래스를 상속하는 자식 클래스입니다. 파이썬에서 상속을 구현하는 것은 간단한 작업입니다. 자식 클래스의 괄호 안에 부모 클래스 이름을 언급하기만 하면 됩니다. 우리는 부모 클래스와 자식 클래스 모두의 객체를 생성하고 있으며 상속에 대한 흥미로운 점이 있습니다. 자식 클래스는 부모 클래스의 메서드와 변수에 액세스할 수 있지만 그 반대의 경우도 마찬가지입니다.

따라서 위의 코드에서 temp1 개체는 fun1 및 fun2 메서드에 모두 액세스할 수 있는 반면 temp2 개체는 fun1 메서드에만 액세스할 수 있습니다. 마찬가지로 코드의 변수에도 동일한 규칙이 적용됩니다. 그리고 부모 클래스 개체에서 자식 클래스 메서드나 변수에 액세스하면 오류가 발생합니다. 코드의 마지막 줄이 주석 처리되지 않으면 오류가 발생합니다.

다중 상속

이 상속을 통해 자식 클래스는 둘 이상의 부모 클래스에서 상속할 수 있습니다. 이러한 유형의 상속은 Java 클래스에서 지원되지 않지만 python은 이러한 유형의 상속을 지원합니다. 다른 클래스에서 여러 특성을 수집해야 하는 요구 사항이 있는 경우 큰 이점이 있습니다.

#부모 클래스 1
클래스 A :
데모1= 0
def fun1 (자신):
인쇄(self.demo1)

#부모 클래스 2
클래스 B :
데모2= 0
def fun2 (자신):
인쇄(self.demo2)

#어린이반
클래스 C (A, B):
def fun3 (자신):
print( "안녕하세요, 당신은 하위 클래스에 있습니다." )

# 메인 코드
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( "첫번째 숫자는 : " ,c.demo1)
print( "두 번째 숫자는 " ,c.demo2)

위의 코드에서 두 개의 부모 클래스 "A", "B"를 만들었습니다. 파이썬의 상속 구문에 따라 "A"와 "B" 클래스를 모두 상속하는 자식 클래스를 만들었습니다. 앞에서 자식 클래스가 부모 클래스의 메서드와 변수에 접근할 수 있다고 설명한 것처럼 자식 클래스 "C"는 부모 클래스의 메서드에 접근할 수 있습니다.

다단계 상속

다단계 상속에서 특성 속성의 전송은 계층적으로 둘 이상의 클래스에 수행됩니다. 더 나은 시각화를 얻기 위해 우리는 그것을 조상 대 손자 관계로 간주하거나 하나 이상의 레벨이 있는 트리에서 루트로 간주할 수 있습니다.

#부모 클래스 1
클래스 차량 :
def 기능 (자체):
print( "차량은 운송에 사용됩니다" )

#어린이 1학년
클래스 차량 (차량):
def 바퀴 (자체):
print( "자동차에는 바퀴가 4개 있습니다." )

#어린이 2학년
클래스 electric_car (자동차):
def 전문 (자신):
print( "전기 자동차는 전기로 달린다" )

전기=전기자동차()
전기.특기()
전기.바퀴()
전기.기능()

위의 코드를 테스트하면서 "차량" 클래스를 만든 다음 클래스 차량을 상속하는 클래스 자동차를 만들었습니다. 이제 "vehicle"은 상위 클래스이고 "car"는 하위 클래스입니다. 나중에 우리는 "electric_car" 클래스를 만들었습니다. 이제 car 클래스는 부모 클래스이고 electric_car 클래스는 자식 클래스이며 차량 클래스와 electric_car 클래스 간의 관계는 다단계 상속입니다.

여기서 electric_car 클래스는 차량과 car 클래스의 변수인 메소드에 접근할 수 있는 반면, car 클래스는 차량 클래스의 변수인 메소드에만 접근할 수 있습니다. 그리고 논의된 바와 같이 상위 클래스 차량은 하위 클래스의 어떤 메소드에도 액세스할 수 없습니다.

계층적 상속

이 상속을 통해 클래스는 둘 이상의 하위 클래스 또는 하위 클래스에 대한 상위 클래스로 호스트할 수 있습니다. 이는 여러 자식 클래스와 메서드 기능을 공유하여 코드 중복을 방지하는 이점을 제공합니다.

#부모클래스
클래스 부모 :
def fun1 (자신):
print( "안녕하세요, 당신은 상위 클래스에 있습니다" )

#어린이 1학년
클래스 child1 (부모):
def fun2 (자신):
print( "안녕하세요, 당신은 하위 클래스 1에 있습니다." )

#어린이 2학년
클래스 child2 (부모):
def fun3 (자신):
print( "안녕하세요, 당신은 하위 클래스 2에 있습니다" )

#어린이3학년
클래스 child3 (부모):
def fun4 (자신):
print( "안녕하세요, 당신은 하위 클래스 3에 있습니다." )

# 메인 프로그램
child_obj1 = child3()
child_obj2 = child2()
child_obj3 = child1()
child_obj1.fun1()
child_obj1.fun4()
child_obj2.fun1()
child_obj2.fun3()
child_obj3.fun1()
child_obj3.fun2()

위의 코드에는 단일 상위 클래스와 동일한 상위 클래스를 상속하는 여러 하위 클래스가 있습니다. 이제 모든 자식 클래스는 부모 클래스의 메서드와 변수에 액세스할 수 있습니다. "Parent" 클래스와 동일한 부모 클래스 "Parent"를 상속하는 3개의 자식 클래스 "child1", "child2", "child3"을 만들었습니다.

확인: Python 오픈 소스 프로젝트 아이디어

하이브리드 상속

동일한 코드에서 둘 이상의 상속 유형이 구현되는 경우 상속을 하이브리드 상속이라고 합니다. 이 기능을 통해 사용자는 상속 기능을 최대한 활용할 수 있습니다. 이는 구현 시 다중 상속이 필요한 코드 구현 요구 사항을 충족합니다.

클래스 A:
def fun1(자신):
print("안녕하세요, 당신은 클래스 A에 있습니다.") 클래스 B(A):
def fun2(자체):
print("안녕하세요, 당신은 클래스 B에 있습니다.") 클래스 C(A):
def fun3(자신):
print("안녕하세요, 당신은 C 클래스에 있습니다.")class D(C,A): #line 13
def fun4(자체):
print("안녕하세요, 당신은 D반입니다.")#main program
참조 = D()
ref.fun4()
ref.fun3()
ref.fun1()

위의 코드에서 우리는 하나 이상의 상속 유형을 구현했음을 알 수 있습니다. 클래스 A, B, C는 계층적 상속을 구현하고 클래스 A, C, D는 다단계 상속을 구현합니다. 이러한 개별 상속에는 부모 클래스의 메서드 및 변수에 액세스하는 개별 속성이 있습니다. 또한 주의할 점이 있습니다.

다단계 상속을 구현할 때 "child_class(parent_class1, parent_class2)"와 같은 구문을 따릅니다. 그러나 "parent_class1"이 계층적으로 "parent_class2"보다 위에 있으면 이 구문에서 오류가 발생합니다. 이 구문을 구현하려면 "parent_class1"이 "parent_class2"보다 계층적으로 낮은 수준에 있어야 합니다. 예를 들어 위의 코드에서 13행에 구문 클래스 D(A, C)가 있으면 클래스 C가 클래스 A보다 계층적으로 낮기 때문에 코드가 작동하지 않습니다.

세계 최고의 대학에서 데이터 과학 과정배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

읽기: Python 프로젝트 아이디어 및 주제

결론

우리는 상속의 용도와 필요를 살펴보고 상속의 정의를 이해했습니다. 또한 상속 유형을 살펴보고 구현 코드와 각 상속 유형에 대한 설명을 살펴보았습니다. 다양한 유형의 상속에서 변수 및 메서드 액세스 규칙을 이해했습니다.

이제 파이썬에서 다양한 유형의 상속을 알고 있으므로 이를 구현하고 코드에서 활용해 보십시오. 상속을 적절히 활용하여 코드를 최적화해 보십시오.

데이터 과학에 대해 자세히 알아보려면 IIIT-B & upGrad의 데이터 과학 PG 디플로마를 확인하십시오. 이 디플로마는 실무 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크샵, 업계 전문가와의 멘토링, 1- 업계 멘토와 일대일, 400시간 이상의 학습 및 최고의 기업과의 취업 지원.

다중 상속과 다단계 상속의 차이점은 무엇입니까?

많은 초보자 프로그래머는 종종 다중 상속과 다중 수준 상속을 혼동합니다. 다음은 이러한 두 가지 유형의 상속 간의 중요한 차이점 중 일부를 보여줍니다.
다중 상속 -
1. 자식 클래스가 둘 이상의 기본 클래스에서 속성과 특성을 상속하는 경우 이러한 유형의 상속을 다중 상속이라고 합니다.
2. 다중 상속은 이해하기가 상당히 복잡할 수 있으므로 널리 사용되지 않습니다.
3. 기본 클래스와 파생 클래스의 두 가지 클래스 수준만 있습니다.
다단계 상속
1. 자식 클래스가 기본 클래스의 속성을 상속하고 다른 기본 클래스의 속성을 추가로 상속하여 전자를 자식 클래스로 만드는 상속을 다중 수준 상속이라고 합니다.
2. 이 상속은 큰 목적을 이루므로 널리 사용됩니다.
3. 기본 클래스, 중간 클래스 및 파생 클래스의 세 가지 이상의 클래스 수준이 있습니다.

하이브리드 상속에 대해 무엇을 이해하고 있습니까?

하이브리드 상속은 고유한 유형의 상속입니다. 새로운 개념을 갖는다기 보다는 그 이름에서 알 수 있듯 두 가지 이상의 상속 유형이 결합된 것입니다. 예를 들어 다중 및 다중 수준 상속을 모두 표시하는 클래스는 하이브리드 상속의 예입니다.

Python의 액세스 수정자에 대해 무엇을 알고 있습니까?

Python에는 아래에 언급된 3가지 유형의 액세스 수정자가 있습니다.
1. 공개 액세스 수정자 - 클래스의 공개 멤버는 프로그램의 모든 부분에서 액세스할 수 있습니다. Python에서 데이터 멤버 또는 멤버 함수의 액세스 지정자가 지정되지 않으면 기본적으로 공개됩니다.
2. 보호된 액세스 수정자 - 데이터 멤버 또는 멤버 함수가 보호된 것으로 정의된 경우 해당 클래스의 파생 클래스에서만 액세스할 수 있습니다.
3. 개인 액세스 수정자 - 개인 액세스 수정자는 가장 안전한 액세스 지정자입니다. private 멤버는 자신이 정의된 클래스 내에서만 액세스할 수 있습니다.