1)類屬性:
直接定義在類中的變數是類屬性
類屬性的值不會因為物件不同而不一樣
2)物件屬性
通過 self.屬性名 = 值 定義在init函式中的屬性
物件屬性的值會因為物件不同而不一樣
1.查物件.屬性 - 獲取物件中指定屬性對應的值,屬性不存在會報錯
getattr(物件, 屬性名) - 獲取物件指定屬性對應的值,屬性不存在會報錯
getattr(物件, 屬性名, 預設值) - 獲取物件指定屬性對應的值,屬性不存在不會報錯,返回預設值
2.改、增
物件.屬性 = 值 - 當屬性不存在就給物件新增屬性,屬性存在的時候就修改屬性的值
setattr(物件, 屬性, 值)
3.刪del 物件.屬性 - 刪除物件中指定的屬性
delattr(物件, 屬性名) - 刪除物件中指定的屬性
1.module
類屬性:
類.module- 獲取定義類的模組的模組名
2.class
物件.class- 獲取物件對應的類
3.name
類.name- 獲取類名
4.dict
類.dict- 將類轉換成字典(類屬性名作為key,類屬性的值作為值 )
物件.dict- 將物件轉換成字典(物件屬性名作為key,屬性的值作為值)
5.doc
類.doc- 獲取類的說明文件
6.basebases
類.base
獲取當前類的父類
bases- 獲取當前類所有的父類
7.slots
約束當前元素的數量,如果給類屬性__slots__賦值了,最後結果不再是字典,導致不能使用__dict__
訪問許可權(針對屬性和方法)
公開的:在類的內部和外部都可以使用,也能被繼承
保護的:在類的內部可以使用,在類的外部不能使用,但是可以被繼承
私有的:只能在類的內部使用,不能被繼承
嚴格來說,python中所有的屬性和方法都是公開的,這說的私有化其實是假的私有化
1.getter和setter的作用
getter - 獲取某個屬性之前想做別的事情,就給這個屬性新增getter
setter - 在給屬性賦值之前想要做別的事情,就給這個屬性新增setter
getter和setter 的新增方法:
1)getter
第一步:在需要新增getter的屬性名前加下劃線
第二步:定義getter對應的函式() 需要@property裝飾器 函式名就是不帶下劃線的屬性名 函式需要乙個返回值
獲取屬性值的通過:物件.不帶_的屬性名 本質就是在呼叫getter對應的函式,取到的屬性值就是函式的返回值
2)setter
如果想要給屬性新增setter,必須先給屬性新增getter
第一步:新增getter
第二步:定義setter對應的函式 需要@getter函式名.setter裝飾器 函式名就是不帶_的屬性名 需要乙個引數,不需要返回值,這個引數就是嘗試給屬性賦的值
第三步:給屬性賦值:物件.不帶下劃線的屬性名 = 值 本質就是在呼叫setter對應的函式
JS基礎入門篇(三十六) 物件導向( 三 )
class es6 中 為 關鍵字用來宣告 乙個 類 1.只能通過new呼叫 2.不存在變數提公升 3.多個方法之間直接書寫,不需要,隔開 4.類的方法是直接定義在類的原型上的 5.定義在類中的方法不可列舉 6.object.keys 和 object.values 下面是詳細解釋 1.只能通過ne...
Python基礎語法十五 re模組和物件導向
compile 正規表示式 編譯正規表示式,建立正規表示式物件 re obj compile r d re obj.fullmatch 234 1.fullmatch 正規表示式,字串 讓整個字串和正規表示式進行匹配 2.match 正規表示式,字串 匹配字串開頭 如果匹配失敗,結果是none,如果...
Java基礎語法(十六)
1.正規表示式的概念與作用 2.正規表示式語法規則 字元類 預定義字元類 邊界匹配器 數量詞 3.正規表示式練習和相關string類的方法 string split string 正則的規則 string replaceall string 正則規則,string 字串 4.正規表示式匹配練習1.毫...