一.類的繼承
python中類支持繼承,并且支持多繼承
1.什么是繼承
父類(超類):被繼承的類
子類:去繼承父類的類
繼承就是讓子類直接擁有父類的屬性和方法(注意:繼承后父類的東西不會(huì)減少)。
python中所有的類都是直接或者間接的繼承自object
2.怎么繼承
class 類名(父類):...
class 類名: == class 類名(object)
3.能繼承那些東西
對象屬性、對象方法、類的字段、類方法、靜態(tài)方法都可以繼承
注意:如果設(shè)置了init會(huì)約束當(dāng)前類的屬性,并且會(huì)導(dǎo)致當(dāng)前類的對象的dict屬相不存在;繼承后,slots的值不會(huì)約束到子類的對象屬性,但是會(huì)導(dǎo)致子類對象的dict只有在類中添加屬性


二.重寫
繼承后子類或擁有父類的屬性和方法,也可以添加屬于自己的屬性和方法
1.添加新的方法
直接在子類的方法,新的方法只能通過子類來使用
2.重寫
a.子類繼承父類的方法,在子類中重新實(shí)現(xiàn)這個(gè)方法的功能。---->完全重寫
b.在子類方法中通過supper().父類方法去保留父類對應(yīng)的方法的功能
3.類中的函數(shù)的調(diào)用過程
類.方法(),對象.方法()
先看當(dāng)前類是否有這個(gè)方法,如果有就直接調(diào)用當(dāng)前類中相應(yīng)的方法;如果沒有就去當(dāng)前父類中去看有沒有這方法
如果有就調(diào)用父類的這個(gè)方法;如果父類中也沒有這個(gè)方法,就去父類的父類中去找
依次類推直到找到為止,如果找到基類object,還沒有找到這個(gè)方法,程序才會(huì)異常



三.添加屬性
1.添加字段:
就直接在子類中聲明新的字段
2.添加對象屬性:
子類是通過集成父類的init方法類繼承的父類的對象屬性





四.運(yùn)算符的重載
運(yùn)算符重載:通過實(shí)現(xiàn)類響應(yīng)的魔法方法,來讓類的對象支持響應(yīng)的運(yùn)算符(+, -,>,<等)
值1 運(yùn)算符 值2 ----->值1.魔法方法(值2)
10 > 20 --->int類,實(shí)現(xiàn) > 對應(yīng)的魔法方法 gt




五.內(nèi)存管理機(jī)制
python中的內(nèi)存管理----->自動(dòng)管理---->垃圾回收機(jī)制
內(nèi)存結(jié)構(gòu)中分棧區(qū)間和堆區(qū)間,棧區(qū)間的內(nèi)存是系統(tǒng)自動(dòng)釋放,堆區(qū)間的內(nèi)存需要手動(dòng)開啟和釋放
但是目前絕大部分編程語言,都提供了一套屬于自己的關(guān)于堆中的內(nèi)存管理方案
---->python中垃圾回收機(jī)制是用來管理堆中的內(nèi)存的釋放
python中的數(shù)據(jù)都是存在堆中的,數(shù)據(jù)的地址都是在棧區(qū)間
1.內(nèi)存的開辟
python中將值賦給變量的是,會(huì)先在堆中開辟空間將數(shù)據(jù)存起來,然后再講數(shù)據(jù)對應(yīng)的地址返回給變量,存在棧中,但是如果是數(shù)字和字符串,會(huì)先在緩存中查看這個(gè)數(shù)據(jù)之前是否存在已經(jīng)創(chuàng)建過,如果沒有就去創(chuàng)建空間存數(shù)據(jù),然后將地址返回,如果之前已經(jīng)創(chuàng)建過就直接將之前的地址返回
2.內(nèi)存的釋放 ---->垃圾回收機(jī)制
系統(tǒng)每隔一定的時(shí)間就會(huì)去檢測當(dāng)前程序中所有的對象的引用計(jì)數(shù)值是否為0;
如果對象的引用計(jì)數(shù)是0對象對應(yīng)的內(nèi)存就會(huì)被銷毀,如果不是0 就不銷毀
3.引用計(jì)數(shù)
每一個(gè)對象都有引用計(jì)數(shù)屬性,用來存儲(chǔ)當(dāng)前對象被引用的次數(shù)。
可以用來通過sys模塊中的getrefcount去獲取一個(gè)對象的引用計(jì)數(shù)值


六.認(rèn)識pygame
pygame是一個(gè)用python寫2D游戲的第三方庫

