python 面向对象(类)--学习笔记
?
面向?qū)ο笫且环N編程方式, 主要集中在類和對象的兩個(gè)概念
- python 中的類符合封裝, 繼承, 多態(tài)的特征
- 類 是一個(gè)模板, 是n多函數(shù)的集成
- 對象 是類的實(shí)例化
類的成員分為三大類:字段、方法、屬性
字段
字段包括靜態(tài)字段和普通字段,靜態(tài)字段只在內(nèi)存中保存一份, 普通字段在每個(gè)對象中都要保存一份(值可不同)
- 普通字段屬于對象, 實(shí)例化對象時(shí)普通字段存在于對象的內(nèi)存中
- 靜態(tài)字段屬于類, 實(shí)例化對象之后不存在與對象的內(nèi)存中
應(yīng)用場景:如果類的多個(gè)對象需要使用相同的屬性值則應(yīng)定義為靜態(tài)字段。
class Animal:#靜態(tài)字段name = '大象‘def __init__(self, name)#普通字段self.name = name # 訪問普通字段 obj = Animal('小猴子‘).name#訪問靜態(tài)字段 Animal.name View Code?
方法
方法: 普通方法, 靜態(tài)方法, 類方法。三種方法在內(nèi)存中都?xì)w屬于類, 區(qū)別在于調(diào)用方式不同
- 普通方法:由對象調(diào)用;至少一個(gè)self參數(shù);執(zhí)行普通方法時(shí)將自動調(diào)用該方法的對象賦值給self。
- 調(diào)用過程? 實(shí)例化對象-->對象調(diào)用類中的普通方法-->執(zhí)行普通方法時(shí),自動調(diào)用該方法的對象賦值給self(self獲取對象的普通字段屬性)-->執(zhí)行方法內(nèi)部邏輯
- 類方法:由類調(diào)用;至少一個(gè)cls參數(shù);執(zhí)行類方法時(shí), 自動調(diào)用該方法的類賦值給cls
- 靜態(tài)方法:靜態(tài)方法由類調(diào)用;無默認(rèn)參數(shù)
?
三種方法相同點(diǎn):所有方法均屬于類中(非對象),所以在內(nèi)存中值保存一份
不同點(diǎn):方法調(diào)用者不同、調(diào)用方法時(shí)自動傳入的參數(shù)不同。
?
屬性
屬性其實(shí)是普通方法的變種
- 定義時(shí), 在普通方法的基礎(chǔ)上添加@property裝飾器
- 定義時(shí),屬性僅有一個(gè)self參數(shù)(新式類可以有多個(gè))
- 調(diào)用時(shí), 無需括號
方法:foo_obj.func()
屬性:foo_obj.prop
訪問屬性可以制造出和訪問字段相同的假象, 屬性由方法變種而來;屬性的功能是在屬性內(nèi)部進(jìn)行一系列邏輯運(yùn)算,最終返回結(jié)果。
屬性由兩種定義方式:裝飾器、靜態(tài)字段(在類中定義值為property對象的靜態(tài)字段)
?
本文作為學(xué)習(xí)筆記進(jìn)行記錄,學(xué)習(xí)大牛blog, 為大牛點(diǎn)贊, 更為詳盡內(nèi)容請移步一下鏈接
http://www.cnblogs.com/wupeiqi/p/4766801.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/brownz/p/8671726.html
總結(jié)
以上是生活随笔為你收集整理的python 面向对象(类)--学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ELK日志平台一 ElasticSear
- 下一篇: Python 分离路径和文件名,分离文件