Scribbling

Python: Inheritance 본문

Computer Science/Python

Python: Inheritance

focalpoint 2022. 4. 19. 17:16

 

Risks of subclassing built-in types

- Generally, overriden methods in sub-classes are not called by other built-in methods.

class StrangeDict(dict):
    def __setitem__(self, key, value):
        super().__setitem__(key, value*2)

dic = StrangeDict(one=1)
dic['1'] = 1
dic.update(three=3)
print(dic)

- This is because some methods are written with C-language.

- So, use UserDict, UserList, UserString if you need to customize list, dict, str.

- If you need to fully tweak their functionalities, use ABC (from collections.abc).

 

Multiple Inheritance

class A:
    def ping(self):
        print('ping', self)

class B(A):
    def pong(self):
        print('pong', self)

class C(A):
    def pong(self):
        print('PONG', self)

class D(B, C):
    def ping(self):
        super().ping()
        print('D-ping', self)

    def pingpong(self):
        self.ping()
        super().ping()
        self.pong()
        super().pong()
        C.pong(self)


d = D()
d.pingpong()

 

 

'Computer Science > Python' 카테고리의 다른 글

Python: Iterator, Generator  (0) 2022.04.22
Python: Operator Overloading  (0) 2022.04.20
Python: Interfaces  (0) 2022.04.18
Python: ABC Class  (0) 2022.04.07
Python: Sequence Protocol  (0) 2022.04.06