1、多繼承
Python同樣有限的支持多繼承形式,多繼承的類定義形如下例:
class DerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N>
需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜索 即方法在子類中未找到時,從左到右查找父類中是否包含方法,
Demo1 單獨呼叫父類:
一個子類同時繼承自多個父類,又稱菱形繼承、鉆石繼承,
使用父類名.init(self)方式呼叫父類時:
class Parent(object): def __init__(self, name): self.name = name print('parent的init結束被呼叫') class Son1(Parent): def __init__(self, name, age): Parent.__init__(self, name) self.age = age print('Son1的init結束被呼叫') class Son2(Parent): def __init__(self, name, gender): Parent.__init__(self, name) self.gender = gender print('Son2的init結束被呼叫') class Grandson(Son1, Son2): def __init__(self, name, age, gender): Son1.__init__(self, name, age) # 單獨呼叫父類的初始化方法 Son2.__init__(self, name, gender) print('Grandson的init結束被呼叫') gs = Grandson('grandson', 12, '男')
運行結果:
parent的init結束被呼叫
Son1的init結束被呼叫
parent的init結束被呼叫
Son2的init結束被呼叫
Grandson的init結束被呼叫
Demo2:
#!/usr/bin/python3 #類定義 class people: #定義基本屬性 name = '' age = 0 #定義私有屬性,私有屬性在類外部無法直接進行訪問 __weight = 0 #定義構造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 說: 我 %d 歲," %(self.name,self.age)) #單繼承示例 class student(people): grade = '' def __init__(self,n,a,w,g): #呼叫父類的構函 people.__init__(self,n,a,w) self.grade = g #覆寫父類的方法 def speak(self): print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade)) #另一個類,多重繼承之前的準備 class speaker(): topic = '' name = '' def __init__(self,n,t): self.name = n self.topic = t def speak(self): print("我叫 %s,我是一個演說家,我演講的主題是 %s"%(self.name,self.topic)) #多重繼承 class sample(speaker,student): a ='' def __init__(self,n,a,w,g,t): student.__init__(self,n,a,w,g) speaker.__init__(self,n,t) test = sample("Tim",25,80,4,"Python") test.speak() #方法名同,默認呼叫的是在括號中排前地父類的方法
運行結果:
我叫 Tim,我是一個演說家,我演講的主題是 Python
2、方法重寫
如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法,實體如下:
#!/usr/bin/python3 class Parent: # 定義父類 def myMethod(self): print ('呼叫父類方法') class Child(Parent): # 定義子類 def myMethod(self): print ('呼叫子類方法') c = Child() # 子類實體 c.myMethod() # 子類呼叫重寫方法 super(Child,c).myMethod() #用子類物件呼叫父類已被覆寫的方法
輸入結果:
呼叫子類方法
呼叫父類方法
3、類屬性與方法
類的私有屬性
__private_attrs:兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問,在類內部的方法中使用時 self.__private_attrs,
類的方法
在類的內部,使用 def 關鍵字來定義一個方法,與一般函式定義不同,類方法必須包含引數 self,且為第一個引數,self 代表的是類的實體,
self 的名字并不是規定死的,也可以使用 this,但是最好還是按照約定是用 self,
類的私有方法
__private_method:兩個下劃線開頭,宣告該方法為私有方法,只能在類的內部呼叫 ,不能在類的外部呼叫,self.__private_methods
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/183052.html
標籤:Python
上一篇:java 開發用什么框架
