day15總結

內置類屬性

1.什么是內置類屬性

聲明類的時候系統(tǒng)自動添加的屬性(可能是字段鳍征,也可能是對象屬性)

1)name

類的字段篇梭;類名.name -- 獲取類的名字(字符串)

2)doc

類的字段蚂子;類名.doc -- 獲取類的說明文檔

3)class

對象屬性泛粹;對象.class -- 獲取對象對應的類
print(type(p1)) #type和它功能相似
print(p1.class)

4)dict (重要埃儿,對象轉換成字典,字典轉換成對象)

對象屬性宴胧;對象.dict -- 將對象中(init里)所有的屬性和對應的值轉換成一個字典中的鍵值對(一個對象一個字典)

類的字段漱抓;類.dict -- 將類轉換成一個字典,字典中的所有元素是類中所有的字段和對應的值

5)module

類的字段牺汤;類.module--獲取當前類是在哪個模塊中聲明的(返回值的是模塊的名字)

6)bases

類的字段辽旋;類名.bases - 獲取當前類的父類(返回的是一個元組)

私有化

1.訪問權限:公開浩嫌,保護檐迟,私有

1)公開 - 公開的屬性和方法是在類的內部,外部能夠使用也能繼承
2)保護 - 保護的屬性和方法在類的內部能夠使用码耐,外部不能使用可以被繼承
3)私有 - 私有的屬性和方法只能在類的內部使用追迟,外部不能使用,也不能被繼承

2.Python中屬性和方法的訪問權限

1)python類中所有的屬性和方法本質都是公開的骚腥;私有化只是'提示'程序員敦间,這個屬性或者方法在外部不要使用,也不要去繼承
2)怎么私有化(只能在內部用):在需要私有化的屬性名或者方法名前面加''(不能以''結尾)
3)私有化的原理:在私有的屬性和方法前加了‘_類名’就可以查詢私有化的屬性和方法。

屬性的getter和setter

1)getter -- 當我們需要在獲取屬性值之前做其他的事情廓块,就需要給這個屬性添加getter厢绝。

2)setter -- 當需要給屬性賦值之前做點別的事情,就需要給這個屬性添加setter带猴。

3)給屬性添加getter

a. 屬性命名的時候前面加'_'(一個下劃線)
b. 在@property裝飾器后面聲明一個對象方法:

將屬性去掉下劃線作為反方法名
方法除了self以外不需要其他參數(shù)
函數(shù)的返回值就是獲取這個屬性帶下劃線的值

4)給屬性添加setter

屬性添加setter之前必須先添加getter

a.保證添加屬性名前有一個下劃線‘_’
b.在@getter名.setter聲明對象方法
將屬性去掉下劃線作為方法名
需要一個self以外的參數(shù)
不需要返回值
c. 在外部使用屬性的時候昔汉,通過‘對象.不帶下劃線的屬性’去使用

注意:當給屬性賦值的時候,實質是在調用setter對應的方法

class WriteError(Exception):
    def __str__(self):
        return '不能修改只讀屬性'
class retangle:
    def __init__(self, width, height):
        if isinstance(height,int) or isinstance(float,int):
            self._height = height
        else:
            raise ValueError
        self._width = width
        self._height = height
        self._area = 0
        self._perimeter = 0
    @property
    def width(self):
        return self._width
    @width.setter
    def width(self,value):
        if not isinstance(value, int) or isinstance(value, float):
            raise ValueError
        if value < 0:
            raise ValueError
        self._width = value
    @property
    def height(self):
        return self.height
    @height.setter
    def height(self, value):
        if not isinstance(value, int) or isinstance(value, float):
            raise ValueError
        if value < 0:
            raise ValueError
        self._height = value
    @property
    def area(self):
        return self._width*self._height
    @area.setter
    def area(self):
        raise WriteError
    @property
    def perimeter(self):
        return (self._width+self._height)*2
p1 = retangle(2,4)
print(p1.area)
print(p1.perimeter)
p1.area = 20
print(p1.area)  #應該報錯不能修改只讀屬性

類中的方法分為:對象方法拴清,類方法靶病,靜態(tài)方法

1)對象方法

a.怎么聲明:直接聲明
b.怎么調用:用對象來調用
c.特點:有指向當前對象的self
d.什么時候用:如果實現(xiàn)函數(shù)的功能需要用到對象屬性,就使用對象方法

2)類方法(類能做的事情口予,cls都能做)

a.怎么聲明:聲明在@classmethod的后面
b.怎么調用:用類來調用娄周,‘類.類方法()’
c.特點:有自帶的參數(shù)cls,表示當前類,這個參數(shù)在調用的時候不用傳參沪停,系統(tǒng)會自動將當前類傳給它煤辨。誰調用就指向誰(如果是對象指向的是對象對應的類)
d.什么時候用:如果實現(xiàn)函數(shù)的功能不需要對象屬性,但是需要類的字段木张,就使用類方法

3)靜態(tài)方法

a.怎么聲明:聲明在@staticmethod后面
b.怎么調用:通過類來調用掷酗,‘類.靜態(tài)方法()’
c.特點:沒有默認參數(shù)(參數(shù)需要時自定)
d.什么時候用:實現(xiàn)函數(shù)的功能既不需要類也不需要對象,就使用靜態(tài)方法

繼承

1.什么是繼承窟哺?

繼承 -- 就是讓子類直接擁有父類的屬性和方法
子類 - 繼承者
父類/超類 - 被繼承者

2.怎么繼承

1)語法

class 類名(父類1泻轰,父類2,且轨,):
說明文檔
類的內容

2)說明:

() - 固定寫法浮声。如果省略括號就默認繼承object(基類)
父類 - 一個類的父類可以有多個,但是一般情況下只有一個(支持多繼承)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末旋奢,一起剝皮案震驚了整個濱河市泳挥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌至朗,老刑警劉巖屉符,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锹引,居然都是意外死亡矗钟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門嫌变,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吨艇,“玉大人,你說我怎么就攤上這事腾啥《校” “怎么了冯吓?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疮跑。 經(jīng)常有香客問我组贺,道長,這世上最難降的妖魔是什么祖娘? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任锣披,我火速辦了婚禮,結果婚禮上贿条,老公的妹妹穿的比我還像新娘雹仿。我一直安慰自己,他們只是感情好整以,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布胧辽。 她就那樣靜靜地躺著,像睡著了一般公黑。 火紅的嫁衣襯著肌膚如雪邑商。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天凡蚜,我揣著相機與錄音人断,去河邊找鬼。 笑死朝蜘,一個胖子當著我的面吹牛恶迈,可吹牛的內容都是我干的。 我是一名探鬼主播谱醇,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼暇仲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了副渴?” 一聲冷哼從身側響起奈附,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煮剧,沒想到半個月后斥滤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡勉盅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年佑颇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菇篡。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡漩符,死狀恐怖,靈堂內的尸體忽然破棺而出驱还,到底是詐尸還是另有隱情嗜暴,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布议蟆,位于F島的核電站闷沥,受9級特大地震影響,放射性物質發(fā)生泄漏咐容。R本人自食惡果不足惜舆逃,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戳粒。 院中可真熱鬧路狮,春花似錦、人聲如沸蔚约。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苹祟。三九已至砸抛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間树枫,已是汗流浹背直焙。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砂轻,地道東北人奔誓。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像搔涝,于是被迫代替她去往敵國和親丝里。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,105評論 1 32
  • 內置函數(shù)屬性 1.聲明是內置類屬性 聲明類的時候系統(tǒng)自動添加的屬性(可能是字段也可能是對象屬性) 定制當前類的對象...
    舉顆鳳梨閱讀 261評論 0 4
  • 什么是類体谒,什么是對象類就是擁有相同功能相同屬性的對象的集合 抽象的概念對象是類的實例 類的聲明class 類名:...
    小逗比的奮斗史閱讀 139評論 0 0
  • 一杯聚、內置類屬性 聲明類的時候系統(tǒng)自動添加的屬性:字段、對象屬性抒痒。 __dict__ -將對象轉換成字典 對象屬性...
    浩子_唯一號閱讀 222評論 0 1
  • 一幌绍、屬性: 本質上,python中所有的屬性和方法都是公開的故响,在類的外部可以使用也可以被繼承 1.私有化 讓屬性和...
    墨2019418閱讀 280評論 0 0