[모르고리즘 2] Mixin
기출 문제에 Mixin을 설명해라라는 것이 있는데,
......?
다중상속이라는 것은 알겠고, 대표적인 것이 DRF의 추상화인 것을 알고 있는데,
설명이 안 될 것 같아 찾아본 믹스인
Mixin
- 상속의 한 종류이지만, 사용에 있어 약간의 차이가 있다.
- 상속은 핵심 기능을 부모 class에, 부가적인 기능을 자식 class에 구현
- mixin은 어떤 핵심 기능을 구현한 class가 부가적인 기능을 추가하기 위해 특정 클래스를 상속 받는다.
- Mixin은 여러 클래스의 일부분을 떼어서, 새로운 자료형을 정의하지 않고 다른 클래스에서 재사용할 속성이나 메소드를 묶어놓은 클래스
- Mixin할 때, 동일한 속성 및 메소드는 overriding
모르고리즘을 대하는 자로써,
응당 모르는 개념은 따라쳐야지?
대표적인 예시가 아래 코드라서 따라 쳐봤지만
class HelloMixIn:
def greeting(self):
print('안녕하세요')
class Person():
def __init__(self, name):
self.name = name
class Student(HelloMixIn, Person):
def study(self):
print('공부하기')
class Teacher(HelloMixIn, Person):
def teach(self):
print('가르치기')
a = Student('lilo')
a.greeting()
응?...
다시 아래 영상을 보고 1차로 이해를 해 보고,,,,,
일단 뭐 대충 뭔 소린지는 알겠지만,
drf에서도 많이 봤다고 생각했지만,
개념적으로 알기 위해서,
동영상에서 나온 예제만으로는 모르겠어서,
다시 한 번 예제를 바꿔서 + 정말 징글징글한 kwargs
를 합쳐서 쳐본다 코드
class A:
my = '내 '
class B(A):
def print_i(self):
print('나다')
class C(A):
pass
class M:
# def print_total(self):
# print(self.total)
def print_name(self, name, **kwargs):
result = self.my + "%s %s" %(name, (kwargs.get('iam')))
print(result)
class D(B, M):
pass
class E(C, M):
pass
d = D()
d.print_name('이름은', iam='lilo')
내 이름은 lilo
D.mro()
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.M'>, <class 'object'>]
순서대로 상속?
순서대로가 뭔데?
MRO(Method Resolution Order)
crazy debugging
도중 .mro()
를 알게되어 처음 쳐봤는데 와우
기똥찼던 블로그!!!
https://tibetsandfox.tistory.com/26
Author And Source
이 문제에 관하여([모르고리즘 2] Mixin), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimlilo/모르고리즘-2-Mixin저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)