単一の継承
#所有类默认继承object
class Gun(object):
def __init__(self,width):
self.length = 100
self.width = width
def shoot(self):
print('bang')
class Wuzi(Gun):
pass
wuzi = Wuzi(3)
wuzi.shoot()
上記の例に示すように、Gunは親クラス、Wuziはサブクラス、WuziはGunを継承し、親クラスのプロパティとメソッドを自動的に継承します。現時点では、Wuziの後の括弧内に1つの親クラスのみが書き込まれます。これは単一継承と呼ばれます。
複数の継承
class Gun1(object):
def __init__(self):
self.length = 100
def shoot(self):
print('bang1')
class Gun2(object):
def __init__(self):
self.length = 200
def shoot(self):
print('bang2')
class Wuzi(Gun1,Gun2):
pass
wuzi = Wuzi()
wuzi.shoot()
このとき、出力はbang1です。つまり
、クラスが複数の親クラスを継承する場合、最初の親クラスの同じ名前のメソッドとプロパティがデフォルトで使用されます。
サブクラスは、同じ名前の親クラスのプロパティとメソッドをオーバーライドします
class Gun1(object):
def __init__(self):
self.length = 100
def shoot(self):
print('bang1')
class Gun2(object):
def __init__(self):
self.length = 200
def shoot(self):
print('bang2')
class Wuzi(Gun1,Gun2):
def shoot(self):
print('bang3')
wuzi = Wuzi()
wuzi.shoot()
このときの出力はbang3です。