ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • super(), inheritance 실행 순서
    컴퓨터 2019. 11. 12. 22:35

    옛날 방식: DLR or depth-first left to right algorithm

    요즘 방식: C3 Linearization algorithm

    유기화학으로 치면 CIP 규칙 같은 것

    super 의 parameter에는 첫째로 super가 써있는 위치의 class 명이 들어가고 둘째로 그것의 object인 self가 들어가야 한다. 어차피 class안에 쓰이면  class 명과 self는 정해지는 거 같은데 굳이 prameter로 받는 이유가 뭘까? 그래서 보통 생략하는거 같다.

    class Animal:
        def __init__(self, animalName):
            print(animalName, 'is an animal.')
            print("E")
    
    
    class Mammal(Animal):
        def __init__(self, mammalName):
            print(mammalName, 'is a warm-blooded animal.')
            super().__init__(mammalName)
            print("D")
    
    
    class NonWingedMammal(Mammal):
        def __init__(self, NonWingedMammalName):
            print(NonWingedMammalName, "can't fly.")
            super().__init__(NonWingedMammalName)
            print("C")
    
    
    class NonMarineMammal(Mammal):
        def __init__(self, NonMarineMammalName):
            print(NonMarineMammalName, "can't swim.")
            super().__init__(NonMarineMammalName)
            print("B")
    
    
    class Dog(NonMarineMammal, NonWingedMammal):
        def __init__(self):
            print('Dog has 4 legs.');
            super().__init__('Dog')
            print("A")
    
    
    d = Dog()

     

    output

    Dog has 4 legs.
    Dog can't swim.
    Dog can't fly.
    Dog is a warm-blooded animal.
    Dog is an animal.
    E
    D
    C
    B
    A

     

    더 깊이 가기전에 정지하고 같은 계층의 다른 함수를 실행

    같은 계층의 모든 함수가 더 깊이 들어가야 하면 그 때부터 더 깊은 계층의 함수로 진입. 올라가는 것을 함께 하고 올라가서 먼저 실행하지도 않는다. 계승하는게 같은지를 먼저 확인하고 같다면 그것 하나를 실행하고 다르면 먼저 올라온 것이 먼저 실행된다.

    (2에서 4로 가지 않고 3으로 가는 것이 독특한 점이다)

    더 진입 할 것이 없이 끝나면 깊은곳으로 오기 직전까지 읽던 코드로 돌아가서 읽는다.

    '컴퓨터' 카테고리의 다른 글

    변수의 범위, scope, (static, 전역, 지역)  (0) 2019.12.11
    콜백함수, 람다  (0) 2019.11.17
    API, COM 모식도  (0) 2019.11.15
    클래스 데코레이터 예제  (0) 2019.11.13
    입문자를 위한 컴퓨터 프로그래밍 기초 용어  (0) 2019.11.08

    댓글

Designed by Tistory.