繼承
繼承是物件導向中非常重要的一環,而繼承跟封裝又是息息相關的,如果沒有封裝就不會有繼承
以下舉個簡單的例子讓你快速了解什麼是繼承
class Cat:
def __init__(self, name):
self.name = name
def jump(self):
print(self.name+" 跳了一下")
def __hair_less(self):
print(self.name+" 禿頭")
class Mix(Cat):
def __init__(self, name):
super(Mix, self).__init__(name)
def hair_less(self):
super().__hair_less()
cat = Mix("噹噹")
cat.jump() #print 噹噹 跳了一下
print(isinstance(cat, Mix)) #print True
print(isinstance(cat, Cat)) #print True
cat.hair_less() #Error 'super' object has no attribute '_Mix__hair_less'
如上述程式碼,我們有一個類別Cat 和 類別Mix而他繼承Cat
Python中的繼承就是使用Mix(Cat)
這種方式來表達繼承
而需要注意的是,init method中是我們初始化這個類別,而因為Mix和Cat有繼承關係
因此初始化Mix的時候也需要初始化Cat,而我們透過super來指向他的父類別 (Cat是Mix的父類別, Mix是Cat的子類別)
而因為Mix繼承了Cat因此他的公有成員(public member)
在Mix這個實體中都可以被調用,因為那是屬於他的
而hair_less這個私有方法(private method)
則沒有辦法被繼承,而且Mix的實體也沒有辦法做任何的調用