博學(xué)谷第十三天

時間:2020年1月8日
內(nèi)容:多態(tài)敢伸、類方法、類屬性

多態(tài)、類方法吠架、類屬性

多態(tài)

面向?qū)ο蟮娜筇卣鳎?/p>

  • 封裝
    • 將屬性和方法書寫到類的里面的操作即為封裝
    • 封裝可以為屬性和方法添加私有權(quán)限
  • 繼承
    • 子類默認(rèn)繼承父類的所有屬性和方法
    • 子類可以重寫父類屬性和方法
  • 多態(tài)
    • 傳入不同的對象,產(chǎn)生不同的結(jié)果

定義:多態(tài)是一種使用對象的方式搂鲫,子類重寫父類方法傍药,調(diào)用不同子類對象的相同父類方法,可以產(chǎn)生不同的執(zhí)行結(jié)果
好處:調(diào)用靈活魂仍,有了多態(tài)拐辽,更容易編寫出通用的代碼,做出通用的編程擦酌,以適應(yīng)需求的不斷變化俱诸!

class Dog(object):
    def work(self):     # 父類提供統(tǒng)一的方法,哪怕是空方法
        print('指哪打哪')


class ArmyDog(Dog):     # 繼承Dog類
    def work(self):     # 子類重寫父類同名方法
        print('追擊敵人')


class DrugDog(Dog):
    def work(self):
        print('追查毒品')


class Person(object):
    def work_with_dog(self, dog):    # 傳入不同的對象赊舶,執(zhí)行不同的代碼睁搭,即不同的work函數(shù)
        dog.work()


ad = ArmyDog()
dd = DrugDog()

daqiu = Person()

daqiu.work_with_dog(ad)
daqiu.work_with_dog(dd)

類屬性和實例屬性

設(shè)置和訪問類屬性
  • 類屬性就是 類對象 所擁有的屬性,它被 該類的所有實例對象 所共有笼平。
  • 類屬性可以使用 類對象實例對象 訪問园骆。
class Dog(object):
    tooth = 10


wangcai = Dog()
xiaohei  = Dog()

print(Dog.tooth)
print(xiaohei.tooth)
print(wangcai.tooth)

類屬性有點:

  • 記錄的某項數(shù)據(jù) 始終保持一致時,則定義類屬性寓调。
  • 實例屬性 要求 每個對象 為其 單獨開辟一份內(nèi)存空間 來記錄數(shù)據(jù)锌唾,而 類屬性 為全類所共有,僅占用一份內(nèi)存捶牢,更加節(jié)省內(nèi)存空間鸠珠。
修改類屬性

類屬性只能通過類對象修改,不能通過實例對象修改秋麸。

class Dog(object):
    tooth = 10


wangcai = Dog()
xiaohei = Dog()

# 修改類屬性
Dog.tooth = 12
print(Dog.tooth)  # 12
print(wangcai.tooth)  # 12
print(xiaohei.tooth)  # 12

# 不能通過對象修改屬性,如果這樣操作炬太,實則是創(chuàng)建了一個實例屬性
wangcai.tooth = 20
print(Dog.tooth)  # 12
print(wangcai.tooth)  # 20
print(xiaohei.tooth)  # 12
實例屬性
class Dog(object):
    def __init__(self):
        self.age = 5

    def info_print(self):
        print(self.age)


wangcai = Dog()
print(wangcai.age)      # 5
# print(Dog.age)    # 報錯:實例屬性不能通過類訪問
wangcai.info_print()    # 5

類方法和靜態(tài)方法

類方法
  • 需要用裝飾器@classmethod來標(biāo)識其為類方法灸蟆,對于類方法,第一個參數(shù)必須是類對象亲族,一般以cls作為第一個參數(shù)炒考。

使用場景

  • 當(dāng)方法中 需要使用類對象 (如訪問私有類屬性等)時,定義類方法
  • 類方法一般和類屬性配合使用
class Dog(object):
    __tooth = 10

    @classmethod
    def get_tooth(cls):
        return cls.__tooth


wangcai = Dog()
result = wangcai.get_tooth()
print(result)  # 10
靜態(tài)方法

特點:

  • 需要通過裝飾器@staticmethod來進行修飾霎迫,靜態(tài)方法既不需要傳遞類對象也不需要傳遞實例對象(形參沒有self/cls)斋枢。
  • 靜態(tài)方法 也能夠通過 實例對象類對象 去訪問。

使用場景:

  • 當(dāng)方法中 既不需要使用實例對象(如實例對象知给,實例屬性)瓤帚,也不需要使用類對象 (如類屬性描姚、類方法、創(chuàng)建實例等)時戈次,定義靜態(tài)方法
  • 取消不需要的參數(shù)傳遞轩勘,有利于 減少不必要的內(nèi)存占用和性能消耗
class Dog(object):
    @staticmethod
    def info_print():
        print('這是一個狗類,用于創(chuàng)建狗實例....')


wangcai = Dog()
# 靜態(tài)方法既可以使用對象訪問又可以使用類訪問
wangcai.info_print()
Dog.info_print()

總結(jié)

  • 面向?qū)ο笕筇匦?
    • 封裝
    • 繼承
    • 多態(tài)
  • 類屬性
    • 歸屬于類對象的屬性怯邪,所有對象共有的屬性
  • 實例屬性
  • 類方法
@classmethod
def xx():
  代碼
  • 靜態(tài)方法
@staticmethod
def xx():
  代碼
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绊寻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子悬秉,更是在濱河造成了極大的恐慌澄步,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件和泌,死亡現(xiàn)場離奇詭異村缸,居然都是意外死亡,警方通過查閱死者的電腦和手機允跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門王凑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人聋丝,你說我怎么就攤上這事索烹。” “怎么了弱睦?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵百姓,是天一觀的道長。 經(jīng)常有香客問我况木,道長垒拢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任火惊,我火速辦了婚禮求类,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屹耐。我一直安慰自己尸疆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布惶岭。 她就那樣靜靜地躺著寿弱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪按灶。 梳的紋絲不亂的頭發(fā)上症革,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音鸯旁,去河邊找鬼噪矛。 笑死量蕊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摩疑。 我是一名探鬼主播危融,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雷袋!你這毒婦竟也來了吉殃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤楷怒,失蹤者是張志新(化名)和其女友劉穎蛋勺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸠删,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡抱完,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了刃泡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巧娱。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烘贴,靈堂內(nèi)的尸體忽然破棺而出禁添,到底是詐尸還是另有隱情,我是刑警寧澤桨踪,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布老翘,位于F島的核電站,受9級特大地震影響锻离,放射性物質(zhì)發(fā)生泄漏铺峭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一汽纠、第九天 我趴在偏房一處隱蔽的房頂上張望卫键。 院中可真熱鬧,春花似錦虱朵、人聲如沸永罚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至官扣,卻和暖如春翅敌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惕蹄。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工蚯涮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留治专,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓遭顶,卻偏偏與公主長得像张峰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子棒旗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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