• 회원가입
  • 로그인
  • 구글아이디로 로그인

[basic] Python - Inheritance (상속)

662  

목차

  1. 상속 정의
  2. 부모 Class 생성
  3. 자식 Class 생성
  4. __init__() 함수 추가
  5. super() 함수 사용
  6. 속성 추가
  7. 메서드 추가

 

상속 정의

 

다른 클래스의 기본 속성/메서드를 상속하는 클래스 생성 가능.

※ 부모 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



분류 제목
basic Python - Home (입문) - 이념 / 추천 링크
basic Python - Intro (소개) - 용도・특징
basic Python - Start (시작) - 파이썬 설치/실행/버전확인
basic Python - Syntax (구문) - 들여쓰기・변수・주석
basic Python - Comment (주석)
basic Python - Variable (변수)
basic Python - DataType (데이터타입) - 자료형
basic Python - Number (숫자)
basic Python - Casting (데이터 타입 변경) - 자료형 변환
basic Python - String (문자열) ★ ※ 색인번호 (= 인덱스) 개념.
basic Python - Boolean (참거짓)
basic Python - Operator (연산자)
basic Python - List (리스트) ★ - 변경 가능한 모음
basic Python - Tuple (투플/튜플) - 변경 불가 모음
basic Python - Set (셋/세트) - '순서(=색인)' 없고, 중복 허용 않는 데이터 모음.
basic Python - Dictionary (딕셔너리) - Key:value 쌍으로 구성된 모음
basic Python - if...elif...else - (이프조건문) ※ 3항연산자 = 삼항연산자
basic Python - While (와일반복문) - 와일문
basic Python - For (포반복문) ★★★★★
basic Python - Function (함수)
1/2
목록
찾아주셔서 감사합니다. Since 2012