목차
상속 정의
부모 Class 생성
자식 Class 생성
__init__() 함수 추가
super() 함수 사용
속성 추가
메서드 추가
상속 정의
다른 클래스의 기본 속성/메서드를 상속하는 클래스 생성 가능.
※ 부모 Class : 기본 Class. (= 상속되는 Class)
※ 자식 Class : 파생 Class. (= 상속하는 Class)
부모 Class 생성
※ 어떤 Class든 부모 Class 가능.
※ 생성 구문 역시 다른 클래스와 비슷.
class Site:
def __init__(self, name, host):
self.n = name
self.h = host
def printsite(self):
print(self.n, self.h)
hz = Site("홈짱닷컴", "Homzzang.com")
hz.printsite()
결과값: 홈짱닷컴 Homzzang.com
자식 Class 생성
※ 부모 Class를 자식 Class의 매개변수로 전달.
class Child (Parent ):
※ Child : 자식 클래스
※ Parent : 부모 클래스
PS.
부모 Class와 내용 동일한 자식 Class 생성하려면,
자식 Class 내용 부분에 pass 키워드 입력. (예제)
[예제] 부모 class 상속한 완전 동일 자식 Class 생성.
class Site:
def __init__(self, name, host):
self.n = name
self.h = host
def printsite(self):
print(self.n, self.h)
class Site2(Site):
pass
hz = Site2 ("홈짱닷컴", "Homzzang.com")
hz.printsite()
결과값: 홈짱닷컴 Homzzang.com
__init__() 함수 추가
1. 자식 Class에 함수 추가하려면, __init__() 함수 사용.
※ __init__() 함수는 Class가 Object 생성할 때마다 자동 호출됨.
2.
자식 Class에 부모 Class와 별도로 __init__() 함수 추가 시,
자식 Class는 더 이상 부모 Class의 __init__()함수 상속 X.
즉, 자식 Class의 __init__() 함수는 부모 Class 것을 덮어씀.
3.
자식 Class __init__() 함수에서 부모 Class의 것을 상속하려면,
자식 Class __init__() 함수 안에서 부모 Class의 __init__() 함수 호출.
※ 이렇게 하면, 자식 Class에 별도의 (속성・메서드) 추가 가능.
[예제] 부모 Class의 __init__() 함수 상속받기.
class Site:
def __init__(self, name, host):
self.n = name
self.h = host
def printsite(self):
print(self.n, self.h)
class Site2(Site):
def __init__(self, name, host):
Site.__init__(self, name, host)
hz = Site2("홈짱닷컴", "Homzzang.com")
hz.printsite()
결과값: 홈짱닷컴 Homzzang.com
super() 함수 사용
1.
자식 Class가 부모 Class로부터 모든 메서드・속성을 상속케 함.
2.
부모 Class의 __init__() 함수 호출 시 특징.
① 부모 Class명 대신 super() 함수 사용.
② 부모 __init__() 함수에 self 매개변수 안 씀 .
[예제] 부모 Class의 __init__() 함수 상속 받기.
class Site:
def __init__(self, name, host):
self.n = name
self.h = host
def printsite(self):
print(self.n, self.h)
class Site2(Site):
def __init__(self, name, host):
super().__init__(name, host)
hz = Site2("홈짱닷컴", "Homzzang.com")
hz.printsite()
결과값: 홈짱닷컴 Homzzang.com
속성 추가
※ 2가지 방식으로 속성 추가 가능.
(1) 변경 불가 방식. (예제1)
클래스 정의 시 , 속성값 결정.
(2) 변경 가능 방식. (예제2) - 권장.
객체 생성 시 , 매개변수로 속성값 받음.
[예제1] 변경 불가 방식으로 속성 추가.
class Site:
def __init__(self, name, host):
self.n = name
self.h = host
def printsite(self):
print(self.n, self.h)
class Site2(Site):
def __init__(self, name, host):
super().__init__(name, host)
self.open = 2012
hz = Site2("홈짱닷컴", "Homzzang.com")
print(hz.open )
결과값: 2012
[예제2] 변경 가능 방식으로 속성 추가. (권장)
class Site:
def __init__(self, name, host):
self.n = name
self.h = host
def printsite(self):
print(self.n, self.h)
class Site2(Site):
def __init__(self, name, host, open ):
super().__init__(name, host)
self.o = open
hz = Site2("홈짱닷컴", "Homzzang.com", 2012 )
print(hz.o )
결과값: 2012
메서드 추가
※ Site2 자식 클래스에 printsite2() 메서드 생성.
class Site:
def __init__(self, name, host):
self.n = name
self.h = host
def printsite(self):
print(self.n, self.h)
class Site2(Site):
def __init__(self, name, host, open):
super().__init__(name, host)
self.o = open
def printsite2(self):
print(self.n, self.h, self.o)
hz = Site2("홈짱닷컴", "Homzzang.com", 2012)
hz.printsite2()
결과값: 홈짱닷컴 Homzzang.com 2012
주소 복사
랜덤 이동
최신댓글