더밝은
150
2019-03-13 18:23:55
3
2684

파이썬 super()의 인자 질문입니다


파이썬 3 사용중이고요


http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-oop-part-5-%EC%83%81%EC%86%8D%EA%B3%BC-%EC%84%9C%EB%B8%8C-%ED%81%B4%EB%9E%98%EC%8A%A4inheritance-and-subclass/
이곳을 참고하고 있습니다




class Unit(object):
    def __init__(self, rank, size, life):
        self.name = self.__class__.__name__
        self.rank = rank
        self.size = size
        self.life = life
        
    def show_status(self):
        print('이름: {}'.format(self.name))
        print('등급: {}'.format(self.rank))
        print('사이즈: {}'.format(self.size))
        print('라이프: {}'.format(self.life))
        

class Goblin(Unit):
    def __init__(self, rank, size, life, attack_type):
        super(Goblin, self).__init__(rank, size, life)
        self.attack_type = attack_type


이런 코드가 있습니다.

여기서 class Goblin의 __init__ 중

super(Goblin, self).__init__ 부분이 이해가 안됩니다

제가 알기로는 super().__init__을 사용해야 하는것으로 알고있거든요

인자를 넣는 것과, 안넣는 것의 차이와, 인자를 넣는다면 무엇을 넣어야 하는지 알고싶습니다.

0
  • 답변 3

  • 엡실론
    1k
    2019-03-13 20:48:13

    python3 에서는 두 개가 동일합니다.

    위의 예제에서 유추할 수 있듯이, 첫번째 인자는 클래스, 두번째는 인스턴스가 들어갑니다.

  • 더밝은
    150
    2019-03-13 21:22:01

    추가 질문이 있습니다

    인자에서 클래스는 무조건 자기 자신만 해당되는 건가요?

    혹시 다른 클래스가 들어갈 수는 없나요?

  • 엡실론
    1k
    2019-03-14 04:29:18

    인자를 주지 않으면 자동으로 현재 클래스로 설정되고, 인자를 주는 경우에는 부모, 조상 클래스를 사용할 수 있습니다.

    class A:
        def f(self): print('A')
    class B(A):
        def f(self): print('B')
    class C(B):
        def f(self): print('C')
    
    c = C() 
    c.f()
    super(C, c).f()
    super(B, c).f()
    
    // 결과
    C
    B
    A
  • 로그인을 하시면 답변 을 등록할 수 있습니다.