関数が被っている場合, 先頭のクラスの関数しか呼ばれない
class A:
def __init__(self):
print('a')
class B:
def __init__(self):
print('b')
class C(A, B):
pass
C()
先頭のクラスの親クラスで定義されている関数と二番目のクラスで定義されている関数では後者が採用される
class A:
def func(self):
print('a')
class B(A):
pass
class C:
def func(self):
print('c')
class D(B, C):
pass
D().func()
ABCを継承していてもインスタンスを生成することはできる
from abc import ABC
class A(ABC):
def __init__(self):
print('a')
A()
他のクラスで同名の関数を定義していてもそのクラスがABCクラスを継承していなければErrorが発生する
from abc import ABC, abstractmethod
class A(ABC):
@abstractmethod
def f(self):
pass
class B(A):
pass
class C:
def f(self):
print('c')
class D(B, C):
pass
D()