繼承語法
將多個父類放在子類之後的圓括號裡。
例如:class subclass(superclass1,superclass2,…)
#類定義部分
從子類的角度來看,子類擴充套件(extend)子父類;但從父類的角度來看,父類派生(derive)出子類。
繼承=復用
子類繼承父類,即可獲得父類的方法,這樣對子類即可復用父類的方法。
class fruit:
def taste(self):
print("水果營養豐富,味道可口")
pass
#子類可以直接復用父類的方法
a.taste()
多繼承
python支援多繼承
但如果不是很有必要,則盡量不要使用多繼承,而是使用單繼承
多個父類方法重名
如果多個父類中包含了同名的方法,排在前面的父類中的方法「遮蔽」排在後面的父類中的同名方法。
class product:
def produce(self):
print("產品可以產生東西")
def info(self):
print("info方法")
class foo:
def produce(self):
print("foo類的produce方法")
#子類繼承父類,子類會獲得父類的方法
#排在前面的父類中的方法,將會優先被繼承
class item(foo, product):
pass
im = item()
im.produce()
im.info()
****重寫父類的方法**`
子類重新定義與父類方法同名的方法,陳偉:重現父類方法
class bird:
def fly(self):
print("鳥類在天空飛翔")
class ostrich(bird):
def fly(self):
#父類的放啊並不適合子類,子類可以定義與父類同名的方法,這就是方法重寫
print("鴕鳥說,我不會飛,我只能在地上跑")
os = ostrich()
os.fly()
呼叫被重寫的方法
使用未繫結方法:以父類類名呼叫被重寫方法,將self作為第乙個引數傳入
class employee:
def work(self):
print("執行996的工作時間,工作很努力")
class manager(employee):
def work(self):
print("經理工作更加拼命")
def relax(self):
print('經理正在休閒放鬆中')
#預設情況下,直接呼叫work方法,總是呼叫子類重寫之後的方法
#self.work()
#如果此處希望呼叫父類的方法,可通過未繫結方法來呼叫
#類名呼叫方法,未繫結方法,因此需要顯示傳入第乙個引數
employee.work(self)
mg = manager()
mg.relax()
呼叫父類構造方法
當子類提供自己的構造方法時,子類構造方法需要呼叫父類的構造方法
如和子類構造器應該直接呼叫父類構造器
方式一:使用未繫結方法呼叫父類構造方法,需要顯示傳入self引數
方法二:用super()函式來呼叫父類的構造方法,無需傳入self引數
class employee:
def __init__(self,salary):
self.salary = salary*2.1
class manager(employee):
def __init__(self,salary,title):
#當子類的初始化操作和父類初始化操作相同時
#程式不應該直接賦值父類初始化**一這樣不利於後期的專案公升級
#因此,子類構造器應該直接呼叫父類構造器
#self.salary = salary*2.1
#方式一:使用未繫結方法呼叫父類構造方法,需要顯示傳入self引數
employee.__init__(self,salary)
self.title = title
#方法二:用super()函式來呼叫父類的構造方法,無需傳入self引數
super().__init__(salary)
self.title = title
mg = manager(6800, "專案經理")
print(mg.salary)
print(mg.title)
函式:
定義h函式的語法
呼叫函式的方法
多返回值函式
遞迴函式
函式引數:
關鍵字引數就是命名引數
為形參指定預設值,指定預設值之後該引數可以省略傳入值
元組引數收集,字典引數收集
逆向元組引數收集,逆向字典引數收集
函式型別:
函式被賦值給變數
函式作為引數
函式作為返回值
總結:5是int型的值,2.3是float型的值…而是函式functions型的值
類物件
定義類的語法
建立物件
物件可呼叫方法、訪問例項變數,也可訪問類變數
方法與函式:
方法與函式基本相同,最大的區別在於:方法會自動繫結
物件呼叫例項方法時,自動繫結第乙個self引數;物件或類呼叫類方法時,自動繫結第乙個cls引數
靜態方法不會自動繫結
如果使用未繫結方法,類也可以呼叫例項方法
例項變數與屬性:
python的例項變數基本等同於屬性
如要隱藏某些例項變數或工具方法,將他們命名未以下雙下畫線開頭的方法名即可
使用property合成屬性;亦為使用@property裝飾
繼承:
多繼承,父類有優先順序(排在前面的優先順序更高)
重寫父類方法
使用未繫結方法呼叫父類方法
使用未繫結方法或super呼叫父類構造法
大事件 Red Hat 宣布併購JBoss!
據外電報道,美國時間4月10日,開源軟體開發商red hat 宣布簽訂了併購jboss的最終協議,以3.5億美元 加現金方式收購軟體製造商jboss。此次收購支付的現金比例為40 餘下的60 以red hat 普通股支付。預計,此次收購將於五月完成。除最初支付的3.5億美元外,red hat可能還要...
中秋快樂 重大事件預告
活動預告 積極參與社群活動與一線技術專家交流一直是愛可生堅持在做的事情,2018年截止9月,愛可生已在北京 廣州 上海 成都4 個城市參與 6 次社群活動並進行技術主題分享 在深圳 北京 上海已舉辦過3 場甲骨文官方支援的mysql技術交流大會,共吸引 500 技術愛好者到場參會 2018年愛可生還...
JS的九大事件相容
事件相容var target e.target e.srcelement 2.獲取事件 document.onclick function evt 3.獲取所按下按鍵的asc碼值var key e.keycode e.which e.charcode 4.阻止事件冒泡 e.stoppropagati...