1)類屬性
定義在類中的變數
類屬性的值不會因為物件的不同而不同
2)物件屬性
通過 self.屬性名 = 值 定義在 init 函式中的屬性
物件屬性的值會因為物件不同而不同
物件.屬性 - 獲取物件指定屬性的值
getattr(物件,屬性名) - 獲取物件指定屬性的值
getattr(物件,屬性名,預設值) - 獲取物件指定屬性的值,若不存在,返回預設值
物件.屬性 = 值 - 屬性存在修改,不存在新增
setattr(物件,屬性名,值) - 屬性存在修改,不存在新增
del 物件.屬性 - 刪除物件屬性
delattr(物件,屬性名) - 刪除物件屬性
類.module- 獲取定義類模組的模組名
物件.class- 獲取物件對應的類
類.name- 獲取類的名字
類.dict- 將類轉換為字典(類屬性名作為key,類屬性值作為值)
物件.dict- 將物件轉換為字典(物件屬性名作為key,物件屬性值作為值)
類.doc- 獲取類的說明文件
類.base- 獲取當前類的父類
類.bases- 獲取當前類的所有父類
slots= (物件屬性1,物件屬性2,…) - 約束當前類物件屬性(物件.__dict__無效)
公開的:在類的內部和外部都可以使用,也能被繼承
保護的:在類的內部可以使用,外部不能使用,可以被繼承
私有的:只能在類的內部使用,不能被繼承
python中所有的屬性和方法都是公開的,私有化其實是假的私有化
屬性和方法前加 __
getter:獲取某個屬性前需要新增其他操作,給屬性新增getter
setter:給屬性賦值前需要新增其他操作,給屬性新增setter
1)getter
第一步:需要新增getter的屬性名前加_
第二步:定義getter對應的函式(1.需要@property裝飾器 2.函式名就是不帶_的屬性名 3.函式返回值)
第三部:不帶 _ 獲取屬性值
2)setter(需要與getter同時存在)
第一步:需要新增setter的屬性名前加_
第二步:定義setter對應的函式(1.需要@getter函式名.setter 裝飾器 2.函式名就是不帶_的屬性名 3.需要乙個引數(嘗試賦值),不需要返回值)
第三部:raise 錯誤型別
day17物件導向
1.面向過程程式設計 一遇到問題馬上想到的是怎麼用演算法或者步驟 邏輯 直接解決問題 2.函式式程式設計 一遇到問題馬上想到有沒有乙個函式具有解決這個問題的功能,如果有直接拿過來用,沒有就自己定義乙個 3.物件導向程式設計 遇到問題馬上想到有沒有乙個物件具有解決這個問題的能力,如果有直接拿過來用,沒...
Day17物件導向作業
定義乙個矩形類,擁有屬性 長 寬 擁有方法 求周長 求面積 class rectangle def init self,length,width self.length length self.width width defperimeter self return self.length self...
day17 物件導向作業
定義乙個矩形類,擁有屬性 長 寬 擁有方法 求周長 求面積 class rectangle def init self,length,width self.length length self.width width defperimeter self return self.length 2 se...