面向?qū)ο筮M階

### 動態(tài)添加屬性:

1. `對象.屬性名=xx`的形式铃岔。

2. 通過`setattr(對象,屬性名,這個屬性對應(yīng)的值)`來添加。

### 動態(tài)添加實例方法:

使用`types.MethodType`來添加俗冻。并且這個函數(shù)中要有self作為第一個參數(shù)。

### 動態(tài)添加類方法:

動態(tài)添加類方法比較簡單,直接將類對象添加一個屬性屋剑,指向一個函數(shù)就可以了。但是這個函數(shù)必須使用`@classmethod`來進行裝飾诗眨。并且這個函數(shù)的第一個參數(shù)必須是`cls`唉匾。

### 動態(tài)添加靜態(tài)方法:

動態(tài)添加靜態(tài)方法也比較簡單,直接將這個類對象添加一個屬性匠楚,并將這個屬性指向一個函數(shù)就可以了巍膘。但是這個函數(shù)必須使用`@staticmethod`來進行裝飾。并且這個函數(shù)不需要傳遞`self`和`cls`這些參數(shù)芋簿,因為她只是一個靜態(tài)方法而已峡懈。

### 刪除屬性:

1. `del 對象.屬性名`。

2. `delattr(對象,屬性名)`

### `__slots__`魔術(shù)變量:

用來限制一個類中与斤,只能添加指定的屬性肪康。

這個魔術(shù)變量只能在新式類中才能用,在舊式類中不能使用撩穿。

### 類也是對象:

在Python中磷支,一切皆為對象。包括類食寡。類是使用元類創(chuàng)建的雾狈。

### 動態(tài)的創(chuàng)建類:

使用`type`函數(shù)可以動態(tài)創(chuàng)建類:`type(類名,父類的元組,這個類的屬性以及對應(yīng)值的字典)`

### 什么是元類:

元類總而言之一句話,就是用來創(chuàng)建類對象的抵皱。

### 創(chuàng)建自己的元類:

在`Python2`中善榛,如果要指定這個類的元類,應(yīng)該修改`__metaclass__`魔術(shù)變量叨叙。

在`Python3`中锭弊,如果要指定這個類的元類,應(yīng)該在類定義的頭部擂错,指定`metaclass=xxx`

1. 使用函數(shù)的形式:

? ? ```python

? ? # 元類會自動將你通常傳給‘type’的參數(shù)作為自己的參數(shù)傳入

? ? def upper_attr(future_class_name, future_class_parents, future_class_attr):

? ? ? ? '''返回一個類對象味滞,將屬性都轉(zhuǎn)為大寫形式'''

? ? ? ? # 選擇所有不以'__'開頭的屬性

? ? ? ? attrs = ((name, value) for name, value in future_class_attr.items() if not name.startswith('__'))

? ? ? ? # 將它們轉(zhuǎn)為大寫形式

? ? ? ? uppercase_attr = dict((name.upper(), value) for name, value in attrs)

? ? ? ? # 通過'type'來做類對象的創(chuàng)建

? ? ? ? return type(future_class_name, future_class_parents, uppercase_attr)

? ? ? ? class Foo(object):

? ? ? ? __metaclass__ = upper_attr

? ? ? ? bar = 'bip'

? ? ```

2. 使用類的形式:

? ? ```python

? ? class UpperAttrMetaclass(type):

? ? ? ? def __new__(cls, name, bases, dct):

? ? ? ? attrs = ((name, value) for name, value in dct.items() if not name.startswith('__'))

? ? ? ? uppercase_attr = dict((name.upper(), value) for name, value in attrs)

? ? ? ? return super(UpperAttrMetaclass, cls).__new__(cls, name, bases, uppercase_attr)

? ? ```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子剑鞍,更是在濱河造成了極大的恐慌昨凡,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚁署,死亡現(xiàn)場離奇詭異便脊,居然都是意外死亡,警方通過查閱死者的電腦和手機光戈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門哪痰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人久妆,你說我怎么就攤上這事晌杰。” “怎么了筷弦?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵肋演,是天一觀的道長。 經(jīng)常有香客問我烂琴,道長多望,這世上最難降的妖魔是什么祈惶? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上掰吕,老公的妹妹穿的比我還像新娘杖们。我一直安慰自己唁桩,他們只是感情好巴碗,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扣癣,像睡著了一般惰帽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上父虑,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天该酗,我揣著相機與錄音,去河邊找鬼士嚎。 笑死呜魄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的莱衩。 我是一名探鬼主播爵嗅,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笨蚁!你這毒婦竟也來了睹晒?” 一聲冷哼從身側(cè)響起趟庄,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伪很,沒想到半個月后戚啥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡锉试,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年猫十,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呆盖。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拖云,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出应又,到底是詐尸還是另有隱情江兢,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布丁频,位于F島的核電站,受9級特大地震影響邑贴,放射性物質(zhì)發(fā)生泄漏席里。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一拢驾、第九天 我趴在偏房一處隱蔽的房頂上張望奖磁。 院中可真熱鬧,春花似錦繁疤、人聲如沸咖为。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躁染。三九已至,卻和暖如春架忌,著一層夾襖步出監(jiān)牢的瞬間吞彤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工叹放, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饰恕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓井仰,卻偏偏與公主長得像埋嵌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子俱恶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容