day14-類(lèi)和對(duì)象

01類(lèi)和對(duì)象

1痢缎、理論上的定義
類(lèi):就是擁有相同功能和相同屬性的對(duì)象的集合(類(lèi)是抽象的)
對(duì)象:類(lèi)的實(shí)例(對(duì)象是具體的)
2辉饱、編程思想
面向過(guò)程編程:以算法為工具
函數(shù)式編程:以函數(shù)為工具
面向?qū)ο缶幊蹋阂灶?lèi)和對(duì)象為工具

02類(lèi)的聲明

1纳决、類(lèi):對(duì)擁有相同功能(方法)和相同屬性(屬性)的封裝
封裝效果:一個(gè)類(lèi)中可以對(duì)多個(gè)功能進(jìn)行封裝(多個(gè)函數(shù))捞奕。封裝多個(gè)屬性

2茄袖、類(lèi)的聲明格式

class 類(lèi)名(父類(lèi)列表):
    類(lèi)的說(shuō)明文檔
    類(lèi)的內(nèi)容

3、說(shuō)明:
class :聲明類(lèi)的關(guān)鍵字
類(lèi)名:標(biāo)識(shí)符详瑞,不能是關(guān)鍵字。駝峰式命名(第一個(gè)單詞首字母小寫(xiě)冬阳,其他單詞首字母大寫(xiě))蛤虐,
(父類(lèi)列表):這個(gè)部分可以省。這個(gè)是繼承語(yǔ)法肝陪,可以多繼承驳庭。
冒號(hào):固定的
類(lèi)的內(nèi)容:包括類(lèi)的方法和類(lèi)的屬性

4、類(lèi)中的方法
方法:就是聲明在類(lèi)中的函數(shù)
a.對(duì)象方法:對(duì)象方法需要通過(guò)對(duì)象來(lái)調(diào)用氯窍,對(duì)象.函數(shù)名()
b.類(lèi)方法:直接寫(xiě)在類(lèi)中的方法饲常,自帶一個(gè)self參數(shù)。
c.靜態(tài)方法

5.創(chuàng)建對(duì)象
創(chuàng)建類(lèi)的時(shí)候狼讨,系統(tǒng)會(huì)默認(rèn)給我們創(chuàng)建這個(gè)類(lèi)對(duì)應(yīng)的構(gòu)造方法贝淤。
構(gòu)造方法:類(lèi)名() ---> 創(chuàng)建類(lèi)對(duì)應(yīng)的對(duì)象。

例子:

# 創(chuàng)建一個(gè)類(lèi)
class Person:
    """
    人類(lèi):

    """
    def eat(self):
        print('人吃飯')
if __name__ == '__main__':

    # 1政供、創(chuàng)建對(duì)象
    p1 = Person() #創(chuàng)建Person類(lèi)的對(duì)象播聪,并且將對(duì)象的地址存到地址p1中。
    # 一個(gè)類(lèi)可以有多個(gè)對(duì)象
    p2 = Person()
    print(id(p1),id(p2))

    # 2布隔、調(diào)用對(duì)象方法
    # 通過(guò)對(duì)象調(diào)用對(duì)象方法离陶,默認(rèn)參數(shù)self不需要傳參。系統(tǒng)會(huì)自動(dòng)傳衅檀。
    p1.eat()

03-構(gòu)造方法和init方法

1招刨、構(gòu)造方法:系統(tǒng)自動(dòng)創(chuàng)建的,方法名和類(lèi)名一樣哀军。用來(lái)創(chuàng)建對(duì)象沉眶。

2、init:init方法的功能是用來(lái)做初始化和添加對(duì)象屬性的
當(dāng)我們通過(guò)構(gòu)造方法去創(chuàng)建對(duì)象的時(shí)候杉适,系統(tǒng)會(huì)自動(dòng)調(diào)用init方法谎倔。

class Dog:
    def __init__(self):
        print('init方法')

class Person:
    # init方法可以添加參數(shù)
    def __init__(self, name):
        print(name)
        print('人類(lèi)的init方法')

if __name__ == '__main__':
    # 創(chuàng)建對(duì)象的過(guò)程:調(diào)用構(gòu)造方法在內(nèi)存中開(kāi)辟空間創(chuàng)建一個(gè)對(duì)象,然后用新建的這個(gè)對(duì)象去調(diào)用init方法猿推,
    #                   來(lái)初始化對(duì)象的屬性传藏,最后才將對(duì)象返回。
    dog1 = Dog()
    dog2 = Dog()

    # 如果類(lèi)的init方法有參數(shù),通過(guò)給構(gòu)造方法傳參類(lèi)init方法傳參毯侦。
    p1 = Person('小明')

04-對(duì)象的屬性

1哭靖、類(lèi)中的內(nèi)容:屬性和方法
屬性:
a.對(duì)象的屬性:不同的對(duì)象,對(duì)應(yīng)的值可能不一樣侈离,這樣的屬性是對(duì)象屬性试幽。屬于對(duì)象
類(lèi)中的對(duì)象屬性是聲明在init方法中的,并且聲明格式是:self.屬性名 = 初值卦碾;
對(duì)象屬性的使用:對(duì)象.屬性名
b.類(lèi)的字段:屬于類(lèi)的铺坞,所有的對(duì)象對(duì)應(yīng)的值是一樣的
方法:
a.對(duì)象方法
b.類(lèi)方法
c.靜態(tài)方法

2、python是動(dòng)態(tài)語(yǔ)言洲胖,python中類(lèi)的對(duì)象的屬性可以進(jìn)行增刪的操作
1)济榨、 查(獲取屬性的值)

    方法一:對(duì)象.屬性名
    方法二:getattr(object(對(duì)象), name(屬性名), default=None)
    方法三:對(duì)象.__getattribute__(屬性名)

2、改(修改屬性的值)

 方法一:對(duì)象.屬性 = 新值
 方法二:setattr(p1, 'age', 20)
 方法三:對(duì)象.__setattr__(屬性名绿映,新值)

3擒滑、增(添加屬性 ---- 屬性不存在)

    方法一:對(duì)象.屬性 = 新值
    方法二:def setattr(對(duì)象,屬性名叉弦,新值)
    方法三:對(duì)象.__setattr__(屬性名丐一,新值)

4、刪(刪除對(duì)象屬性)

    方法一:del 對(duì)象.屬性
    方法二:delattr(對(duì)象淹冰,屬性名)
    方法三:對(duì)象.__delattr__()

05-對(duì)象方法

對(duì)象方法:
a库车、直接聲明在類(lèi)中的函數(shù)默認(rèn)是對(duì)象方法,有一個(gè)默認(rèn)參數(shù)self樱拴。
b柠衍、對(duì)象方法要通過(guò)對(duì)象來(lái)調(diào)用:對(duì)象.對(duì)象方法()
c、對(duì)象方法中默認(rèn)參數(shù)self晶乔,不需要傳參珍坊。因?yàn)樵谡{(diào)用這個(gè)方法的時(shí)候系統(tǒng)會(huì)自動(dòng)將當(dāng)前對(duì)象傳給self。
哪個(gè)對(duì)象調(diào)用的方法瘪弓,self就指向誰(shuí)。

練習(xí)1禽最、寫(xiě)一個(gè)矩形類(lèi)腺怯,有長(zhǎng)和寬,有兩個(gè)功能川无,分別是求周長(zhǎng)和面積呛占。

class Rect:
    def __init__(self, width, high):
        self.width = width
        self.high = high
    def C(self):
        return 2*(self.width+self.high)
    def Area(self):
        return self.high*self.width
rect1 = Rect(2,3)
print('該矩形的周長(zhǎng)是%d,面積是%d'%(rect1.C(),rect1.Area()))

練習(xí)2、寫(xiě)一個(gè)班級(jí)類(lèi)懦趋,班級(jí)里面有多個(gè)學(xué)生的成績(jī)(一門(mén)),班級(jí)名晾虑,可以獲取成績(jī)的最高分

class Class:
    def __init__(self, class_name, score):
        self.class_name = class_name
        self.score = score
    def get_max(self):
        if not self.score:
            return 0
        return max(self.score)
class1 = Class('1班', [35,56,67,78,89,90,43])
print('%s里的最高分是%d'%(class1.class_name,class1.get_max()))

06-類(lèi)的字段與方法

1、類(lèi)的屬性叫類(lèi)的字段
a.什么是類(lèi)的字段
類(lèi)的字段就是聲明在類(lèi)的里面,方法的外面的變量帜篇,
b.什么樣的屬性聲明成類(lèi)的字段:
屬于類(lèi)的糙捺,對(duì)于這個(gè)類(lèi)的所有的對(duì)象來(lái)說(shuō),其值是公有的
c.怎么使用:
通過(guò)類(lèi)來(lái)使用:類(lèi).字段
2笙隙、類(lèi)中的方法
1).對(duì)象方法(實(shí)例方法)
聲明的形式:直接聲明在類(lèi)型洪灯。
特點(diǎn):自帶一個(gè)不需要主動(dòng)傳參的默認(rèn)參數(shù)self,誰(shuí)來(lái)調(diào)用指向誰(shuí)竟痰。
調(diào)用:通過(guò)對(duì)象來(lái)調(diào)用签钩。
2).類(lèi)方法
聲明的形式:聲明方法前需要使用@classmethod說(shuō)明
特點(diǎn):自帶一個(gè)默認(rèn)參數(shù)cls,這個(gè)參數(shù)調(diào)用的時(shí)候不需要傳值。系統(tǒng)自動(dòng)給他傳坏快。誰(shuí)調(diào)用就指向誰(shuí)铅檩。始終指向當(dāng)前類(lèi)。

調(diào)用:通過(guò)類(lèi)來(lái)調(diào)用 --- 類(lèi).類(lèi)方法()
3).靜態(tài)方法:
聲明形式:聲明方法前需要使用@staticmethod說(shuō)明
特點(diǎn):沒(méi)有默認(rèn)的參數(shù)
調(diào)用:通過(guò)類(lèi)來(lái)調(diào)用---類(lèi).靜態(tài)方法()
@staticmethod

4).遇到問(wèn)題怎么來(lái)選擇使用哪種方法:
a莽鸿、大前提:只要實(shí)現(xiàn)方法的功能需要用到對(duì)象的屬性昧旨,我們就使用對(duì)象方法。否則就使用靜態(tài)方法或者類(lèi)方法富拗。
b臼予、不使用對(duì)象方法的前提下,如果實(shí)現(xiàn)功能需要用到類(lèi)的字段就使用類(lèi)方法啃沪。
c粘拾、實(shí)現(xiàn)功能既不需要對(duì)象的屬性,又不需要類(lèi)的字段就使用靜態(tài)方法创千。
注意:靜態(tài)方法和類(lèi)方法劃分不用那么嚴(yán)格缰雇,靜態(tài)方法能做的類(lèi)方法可以做,反之亦然追驴。

實(shí)例:

class Person:
    def object_faunc(self):
        print('對(duì)象方法')

    # 聲明一個(gè)類(lèi)方法
    @classmethod
    def class_func(cls):
        print('這是一個(gè)類(lèi)方法')

    @staticmethod
    def static_func():
        print('這是一個(gè)靜態(tài)方法')


class Person:
    # 類(lèi)的字段械哟,存儲(chǔ)人類(lèi)的數(shù)量
    number = 61

    @classmethod
    def show_number(cls):
        print('人類(lèi)的數(shù)量是%d億'% (cls.number))

    @staticmethod
    def sho_numbers():
        print('人類(lèi)的數(shù)量是%d億' % (Person.number))
Person.show_number()
Person.sho_numbers()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市殿雪,隨后出現(xiàn)的幾起案子暇咆,更是在濱河造成了極大的恐慌,老刑警劉巖丙曙,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爸业,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡亏镰,警方通過(guò)查閱死者的電腦和手機(jī)扯旷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)索抓,“玉大人钧忽,你說(shuō)我怎么就攤上這事毯炮。” “怎么了耸黑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵桃煎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我崎坊,道長(zhǎng)备禀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任奈揍,我火速辦了婚禮曲尸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘男翰。我一直安慰自己另患,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布蛾绎。 她就那樣靜靜地躺著昆箕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪租冠。 梳的紋絲不亂的頭發(fā)上鹏倘,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音顽爹,去河邊找鬼纤泵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镜粤,可吹牛的內(nèi)容都是我干的捏题。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼肉渴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼公荧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起同规,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤循狰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后券勺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绪钥,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年朱灿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昧识。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钠四。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盗扒,死狀恐怖跪楞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侣灶,我是刑警寧澤甸祭,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站褥影,受9級(jí)特大地震影響池户,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凡怎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一校焦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧统倒,春花似錦寨典、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至浴鸿,卻和暖如春井氢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岳链。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工花竞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宠页。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓左胞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親举户。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烤宙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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

  • 一、類(lèi)和對(duì)象: 1.理論上的定義類(lèi):就是擁有相同功能和相同屬性的對(duì)象的集合(類(lèi)是抽象)對(duì)象:類(lèi)的實(shí)例(對(duì)象是具體的...
    祖國(guó)的花朵_3980閱讀 230評(píng)論 0 0
  • 1俭嘁、理論上的定義: 類(lèi):就是擁有相同功能和屬性的對(duì)象的集合躺枕。(抽象)對(duì)象:類(lèi)的實(shí)例(具體) 2、從生活角度 如果說(shuō)...
    Deathfeeling閱讀 134評(píng)論 0 1
  • 一.類(lèi)和對(duì)象 1.理論定義:類(lèi)就是擁有相同功能和相同屬性的對(duì)象的集合(類(lèi)是抽象的)對(duì)象:類(lèi)的實(shí)例(對(duì)象是具體的)2...
    葡萄柚子茶閱讀 243評(píng)論 0 1
  • 1.類(lèi)的聲明 類(lèi):對(duì)擁有相同功能(方法)和相同屬性的封裝 封裝效果:一個(gè)類(lèi)中可以對(duì)多個(gè)功能進(jìn)行封裝(多個(gè)函數(shù))供填;封...
    xaidc閱讀 81評(píng)論 0 0
  • 花開(kāi)花落拐云,春來(lái)春去。 如雨如絲近她,如夢(mèng)如幻叉瘩。 伊人何在,夢(mèng)里神游粘捎。 曾幾何時(shí)薇缅,執(zhí)手相依危彩。 偎依相望,無(wú)限深情泳桦。 纏綿...
    漫步仲夏閱讀 316評(píng)論 2 2