상속은 객체지향 패러다임의 중요한 측면입니다. 상속은 처음부터 클래스를 만드는 대신 기존 클래스를 사용하여 새 클래스를 만들 수 있기 때문에 프로그램에 코드 재사용성을 제공합니다.
상속에서 자식 클래스는 속성을 획득하고 부모 클래스에 정의된 모든 데이터 멤버와 함수에 액세스할 수 있습니다. 하위 클래스는 상위 클래스의 기능에 대한 특정 구현을 제공할 수도 있습니다. 튜토리얼의 이 섹션에서는 상속에 대해 자세히 설명합니다.
CSS 테두리
Python에서 파생 클래스는 파생 클래스 이름 뒤의 괄호 안에 기본을 언급하기만 하면 기본 클래스를 상속할 수 있습니다. 기본 클래스를 파생 클래스로 상속하려면 다음 구문을 고려하세요.
통사론
class derived-class(base class):
클래스는 대괄호 안에 모든 클래스를 언급하여 여러 클래스를 상속할 수 있습니다. 다음 구문을 고려하세요.
통사론
class derive-class(, , ..... ):
실시예 1
class Animal: def speak(self): print('Animal Speaking') #child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') d = Dog() d.bark() d.speak()
산출:
dog barking Animal Speaking
Python 다단계 상속
Python에서는 다른 객체지향 언어와 마찬가지로 다단계 상속이 가능합니다. 다중 수준 상속은 파생 클래스가 다른 파생 클래스를 상속할 때 보관됩니다. Python에서 다중 레벨 상속이 보관되는 레벨 수에는 제한이 없습니다.
다중 수준 상속의 구문은 다음과 같습니다.
통사론
class class1: class class2(class1): class class3(class2): . .
예
class Animal: def speak(self): print('Animal Speaking') #The child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') #The child class Dogchild inherits another child class Dog class DogChild(Dog): def eat(self): print('Eating bread...') d = DogChild() d.bark() d.speak() d.eat()
산출:
dog barking Animal Speaking Eating bread...
파이썬 다중 상속
Python은 하위 클래스에서 여러 기본 클래스를 상속할 수 있는 유연성을 제공합니다.
다중 상속을 수행하는 구문은 다음과 같습니다.
통사론
class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN):
예
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(d.Summation(10,20)) print(d.Multiplication(10,20)) print(d.Divide(10,20))
산출:
30 200 0.5
issubclass(sub,sup) 메소드
issubclass(sub, sup) 메소드는 지정된 클래스 간의 관계를 확인하는 데 사용됩니다. 첫 번째 클래스가 두 번째 클래스의 하위 클래스이면 true를 반환하고 그렇지 않으면 false를 반환합니다.
다음 예를 고려하십시오.
예
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(issubclass(Derived,Calculation2)) print(issubclass(Calculation1,Calculation2))
산출:
True False
isinstance(obj, class) 메소드
isinstance() 메소드는 객체와 클래스 간의 관계를 확인하는 데 사용됩니다. 첫 번째 매개변수인 obj가 두 번째 매개변수인 class의 인스턴스이면 true를 반환합니다.
다음 예를 고려하십시오.
osi 모델 레이어
예
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(isinstance(d,Derived))
산출:
True
메소드 재정의
하위 클래스에서 상위 클래스 메소드의 특정 구현을 제공할 수 있습니다. 부모 클래스 메서드가 특정 구현을 통해 자식 클래스에 정의되면 이 개념을 메서드 재정의라고 합니다. 하위 클래스에서 상위 클래스 메소드의 다른 정의가 필요한 시나리오에서는 메소드 재정의를 수행해야 할 수도 있습니다.
Python에서 메서드 재정의를 수행하려면 다음 예제를 고려하세요.
예
class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak()
산출:
Barking
메서드 재정의의 실제 예
class Bank: def getroi(self): return 10; class SBI(Bank): def getroi(self): return 7; class ICICI(Bank): def getroi(self): return 8; b1 = Bank() b2 = SBI() b3 = ICICI() print('Bank Rate of interest:',b1.getroi()); print('SBI Rate of interest:',b2.getroi()); print('ICICI Rate of interest:',b3.getroi());
산출:
Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8
Python의 데이터 추상화
추상화는 객체지향 프로그래밍의 중요한 측면입니다. Python에서는 숨길 속성에 접두사로 이중 밑줄(___)을 추가하여 데이터 숨기기를 수행할 수도 있습니다. 그 후에는 속성이 객체를 통해 클래스 외부에 표시되지 않습니다.
다음 예를 고려하십시오.
예
class Employee: __count = 0; def __init__(self): Employee.__count = Employee.__count+1 def display(self): print('The number of employees',Employee.__count) emp = Employee() emp2 = Employee() try: print(emp.__count) finally: emp.display()
산출:
The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'