Day16總結(jié)-2019/08/12

一、多繼承

python中的類支持多繼承(讓一個類同時繼承多個類)。
多繼承的時候,子類只能繼承第一個父類所有的屬性和方法,后面的父類中。
字段、方法都能繼承,對象屬性只能繼承前面那一個父類的對象屬性。

二、運算符重載

1.運算符

python中所有的類型都是類,所以所有的數(shù)據(jù)都是對象。
python中使用任意的運算符都是在調(diào)用相應(yīng)的類中的相應(yīng)方法,每一個運算符對應(yīng)什么方法是固定的。
某種數(shù)據(jù)是否支持某個運算符操作,就看這個數(shù)據(jù)類型中是否實現(xiàn)了對應(yīng)的方法。

2.運算符重載

運算符重載指的是在不同的類中實現(xiàn)同樣的運算符對應(yīng)的函數(shù)。
類的對象默認(rèn)情況下只支持:==,!=

    # a+b -> a.__add__(b)
    # self -> 當(dāng)前類的對象,也是+前面的那個數(shù)據(jù)
    # other -> +后面的那個數(shù)據(jù)。類型根據(jù)運算規(guī)則的設(shè)計可以是任何類型的數(shù)據(jù)
    def __add__(self, other):
        return '123'

三、淺拷貝和深拷貝

1.直接賦值:

將變量中的地址直接賦值給新的變量;賦值后兩個變量的地址相同。

2.拷貝:

不管是淺拷貝還是深拷貝都會對原數(shù)據(jù)進(jìn)行賦值產(chǎn)生新的地址。

3.淺拷貝:

字符串、列表和元組的切片;對象.copy();copy模塊中的copy方法都是淺拷貝。
淺拷貝只拷貝當(dāng)前對象,不會對子對象進(jìn)行拷貝。即子對象的地址元對象的地址指向同一個地址。

4.深拷貝:

copy模塊中的deepcopy方法是深拷貝。子對象(不管有幾層)的地址全部產(chǎn)生新的地址。

四、枚舉

1.枚舉的特點:

1.可以通過有意義的屬性名直接顯示數(shù)據(jù)。
2.每個數(shù)據(jù)的值不能修改。
3.可以做到不同數(shù)據(jù)的值唯一。

@unique         # 做到不同數(shù)據(jù)的值唯一
class PokerNum(Enum):       # 繼承Enum,讓每個數(shù)據(jù)的值不能修改,做到1,2
    pass

五、內(nèi)存管理:

1.內(nèi)存的開辟:

內(nèi)存區(qū)間分為棧區(qū)間和堆區(qū)間;棧區(qū)間的內(nèi)存自動開辟自動釋放,堆區(qū)間的內(nèi)存需要手動開辟手動釋放。
但是python已經(jīng)將堆區(qū)間內(nèi)存的開辟和釋放自動化。

當(dāng)給變量賦值的時候,系統(tǒng)會先在堆區(qū)間中開辟空間將數(shù)據(jù)存起來,然后再將數(shù)據(jù)在堆中的地址存到變量中,變量存在棧區(qū)間;
數(shù)字和字符串?dāng)?shù)據(jù)在開辟空間的時候,會先檢查內(nèi)存中之前是否已經(jīng)有過這個數(shù)據(jù)。
如果有就直接使用之前的數(shù)據(jù),沒有才開辟新的空間保存數(shù)據(jù)。

2.內(nèi)存的釋放:

棧區(qū)間:全局棧區(qū)間在程序結(jié)束后銷毀,函數(shù)棧區(qū)間在函數(shù)調(diào)用結(jié)束后銷毀。
堆區(qū)間:一個對象是否銷毀,就看這個對象的引用計數(shù)是否為0;如果一個對象的引用為0,這個對象就會銷毀(垃圾回收機制)。
注意:python中針對對象的循環(huán)引用已經(jīng)做了處理。不需要寫額外的代碼來解決循環(huán)引用問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,697評論 1 32
  • 內(nèi)存管理和拷貝 review 1.內(nèi)置類屬性: name、doc、class、dict、module、bases2...
    漫磋嗟閱讀 204評論 0 0
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,698評論 1 51
  • 1.設(shè)計模式是什么? 你知道哪些設(shè)計模式,并簡要敘述?設(shè)計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,305評論 0 12
  • 韓東 嵌入式系統(tǒng)原理及應(yīng)用技術(shù) 單片機原理與應(yīng)用設(shè)計 自動檢測技術(shù)及儀表控制系統(tǒng) 科技寫作教程 測控技術(shù)與儀器專業(yè)...
    咕嚕咕嚕的叫閱讀 298評論 0 0

友情鏈接更多精彩內(nèi)容