1.多繼承
python中的類支持多繼承(讓一個類同時繼承多個類);
多繼承的時候子類只能繼承第一個父類所有的屬性和方法, 后面的父類只有字段和方法可以被繼承(也就是方法名一樣的時候繼承的是前面的父類的方法)
2.運算符
python中所有的類型都是類, 所以所有的數(shù)據(jù)都是對象;
python中使用任意的運算符都是在調(diào)用相應(yīng)的類中的相應(yīng)方法, 每一個運算符對應(yīng)什么方法是固定的
某種數(shù)據(jù)是否支持某個運算符操作就看這個數(shù)據(jù)類型中是否實現(xiàn)了對應(yīng)的方法
2.1 運算符重載指的是在不同的類中實現(xiàn)同樣的運算符對應(yīng)的函數(shù)
類的對象默認情況下只支持: ==, !=
注意: < 和 > 符號只需要重載其中一個就可以
3.淺拷貝和深拷貝
3.1 直接賦值
將變量中的地址直接賦值給新的變量; 賦值后兩個變量的地址相同
3.2 拷貝
不管是淺拷貝還是深拷貝都會原數(shù)據(jù)進行賦值產(chǎn)生新的地址
3.3 淺拷貝
字符串, 列表, 元組的切片; 對象.copy(); copy模塊中的copy方法都是淺拷貝
淺拷貝只拷貝當前對象, 不會對子對象進行拷貝
4.深拷貝
copy模塊中的deepcopy方法是深拷貝
4.枚舉
枚舉值的特點:
引用Enum類和unique值唯一裝飾器
1.可以通過有意義的屬性名直接顯示數(shù)據(jù)
2.每個數(shù)據(jù)不能修改
3.可以做到不同數(shù)據(jù)的值是唯一的
5.內(nèi)存管理
5.1 內(nèi)存的開辟
內(nèi)存區(qū)間分為棧區(qū)間和堆區(qū)間; 棧區(qū)間的內(nèi)存自動開辟自動釋放, 堆區(qū)間需要程序員手動開辟和手動釋放
但是python已經(jīng)將堆區(qū)間內(nèi)存的開辟和釋放自動化
a. 當給變量賦值時, 系統(tǒng)會先在堆區(qū)間中開辟空間將數(shù)據(jù)存起來, 然后再將數(shù)據(jù)在堆中的地址存到變量中, 變量存在棧區(qū)間;
b. 數(shù)字數(shù)據(jù)和字符串數(shù)據(jù)在開辟空間的時候, 會先檢查內(nèi)存中是否已經(jīng)有這個數(shù)據(jù), 如果有就直接使用之前的數(shù)據(jù), 沒有才開辟空間保存
5.2 內(nèi)存的釋放
**棧區(qū)間: **全局棧區(qū)間在程序結(jié)束后銷毀, 函數(shù)棧區(qū)間在函數(shù)調(diào)用結(jié)束后銷毀(自動)
堆區(qū)間: 看一個對象是否銷毀, 就看這個對象的引用計數(shù)是否為0; 如果一個對象的引用計數(shù)為0, 這個對象就會銷毀(垃圾回收機制)
注意: python中針對對象的循環(huán)引用已經(jīng)做了處理, 程序員不需要寫額外的代碼來解決循環(huán)引用問題