day13-class

什么是對(duì)類/什么是對(duì)象

1)官方定義
類就是擁有相等功能和相同的屬性的對(duì)象的集合 -- 抽象的
對(duì)象就是類的實(shí)例 -- 具體的
2)生活角度看類和對(duì)象
如果 人 是類, 具體的人就是對(duì)象
如果 電腦 是類, 我的筆記本就是對(duì)象

2.類的聲明

1)語法

class 類名:
    類的內(nèi)容

2)說明
class -- 固定寫法,聲明類的關(guān)鍵字
類名 -- 標(biāo)識(shí)符,不能是關(guān)鍵字
見名知意,采用駝峰式命名(采用通過單詞首字母大寫的方式,來區(qū)分不同的單詞)
: -- 固定寫法
類的內(nèi)容 -- 主要包含:類的說明文檔刑枝、屬性(普通變量)、功能(函數(shù)/方法)

#聲明一個(gè)Person類
class Person:
    """
    人類
    """
    #=========屬性========
    #=========方法========
    def eat(self,food):
        print(self,p1)
        print(food)
#創(chuàng)建Person類的對(duì)象p1
p1 = Person()
p0 = p1
p1.eat('米飯')

3.對(duì)象怎么聲明

對(duì)象 = 類() -- 創(chuàng)建指定的類對(duì)應(yīng)的對(duì)象

4.類中的方法

a.什么是方法:聲明在類中的函數(shù) 就叫方法
b.類中的方法有三種:對(duì)象方法抵知、類方法芥喇、靜態(tài)方法

對(duì)象方法:直接聲明在類中的函數(shù);有默認(rèn)參數(shù)self,通過對(duì)象調(diào)用時(shí),self不需要傳參,系統(tǒng)會(huì)自動(dòng)把當(dāng)前對(duì)象傳給他;
(self,當(dāng)前對(duì)象 -- 誰調(diào)用,self就指向誰;當(dāng)前對(duì)象能做的事情,self都能做)
通過類的對(duì)象調(diào)用: 對(duì)象.對(duì)象方法()

=====================================================
類方法: 聲明函數(shù)前加@classmethod
有默認(rèn)參數(shù)cls:通過類調(diào)用的時(shí)候,該參數(shù)不用傳參;系統(tǒng)會(huì)自動(dòng)將當(dāng)前類傳遞給他
(cls,當(dāng)前類 -- 誰調(diào)用,cls就指向誰;當(dāng)前類能做的事情,cls都能做)
通過類來調(diào)用: 類.類方法()

@classmethod
def destroy(cls):
    print('')

===================================================
靜態(tài)方法: 聲明函數(shù)前加@staticmethod
沒有默認(rèn)參數(shù)
通過類來調(diào)用: 類.靜態(tài)方法()

@staticmethod
def animal():

================類方法的調(diào)用==================

class Person1:
    @classmethod
    def destroy(cls):
        print('aaa')

Person1.destroy()

=================靜態(tài)方法的調(diào)用================

class Person2:
    @staticmethod
    def animal():
        print('aaa')
Person2.animal()

常識(shí):

什么是init方法

  • init是類中默認(rèn)繼承的一個(gè)魔法方法,用來初始化類;本質(zhì)是對(duì)象方法,但是不需要通過對(duì)象調(diào)用,會(huì)自動(dòng)調(diào)用
  • 通過類創(chuàng)建對(duì)象的時(shí)候(通過構(gòu)造方法創(chuàng)建對(duì)象),系統(tǒng)會(huì)自動(dòng)調(diào)用類用的init方法
  • 創(chuàng)建對(duì)象的時(shí)候需不需要參數(shù),需要幾個(gè)參數(shù),看這個(gè)類的init方法
  • 聲明類的時(shí)候,系統(tǒng)會(huì)自動(dòng)給我們創(chuàng)建一個(gè)函數(shù),這個(gè)函數(shù)名和聲明的類的類名一樣;
  • 在函數(shù)中,會(huì)先在內(nèi)存中開辟空間創(chuàng)建對(duì)象,然后用創(chuàng)建的對(duì)象去調(diào)用類的init方法,最后才會(huì)將對(duì)象返回
class Person:
    def __init__(self,name):
        print('aaa')
        print(name)

p1 = Person(name=123)

1屬性

  • 類中的屬性分為:對(duì)象屬性;字段

1)字段 -- 直接什么在類中的變量;字段要通過'類.字段'的方式使用
當(dāng)屬性的值不會(huì)因?yàn)閷?duì)象不同而不同,這種屬性就可以聲明成類的字段

2)對(duì)象屬性:必須在init方法中,以'self.屬性 = 值'的形式聲明
當(dāng)屬性的值可能會(huì)因?yàn)閷?duì)象的不同而不同,使用對(duì)象屬性
對(duì)象屬性通過'對(duì)象.屬性'的方式來使用

class Dog:
    #====字段====
    numbers = 10
    #=====對(duì)象屬性======
    def __init__(self,color1='yellow',age1=1):
        self.color = color1
        self.age = age1


Dog.numbers = 100  #可以修改值
print(Dog.numbers)
dog1 = Dog()
print(dog1.color)
print(dog1.age)
dog2 = Dog('white')
print(dog2.color)
  • 練習(xí):聲明一個(gè)學(xué)生類,擁有屬性:名字/電話/年齡/學(xué)號(hào)
  • 擁有功能:學(xué)習(xí)(打印XXX在學(xué)XXX)
class Students:
    def __init__(self,name1,tel1='',age1=0):
        self.name = name1
        self.tel = tel1
        self.age = age1
        self.id = '0000'
    def study(self,subject):
        print('%s在學(xué)%s'%(self.name,subject))

student1 = Students('小明')
student1.study('python')
注意,聲明 類 時(shí)方法的選擇

1.對(duì)象方法:實(shí)現(xiàn)函數(shù)的功能,需要對(duì)象屬性時(shí)
2.類方法:實(shí)現(xiàn)函數(shù)的功能,不需要對(duì)象屬性,但是需要類相關(guān)的操作時(shí)
3.靜態(tài)方法:實(shí)現(xiàn)函數(shù)的功能既不需要對(duì)象屬性,也不需要類的相關(guān)操作

class jx:
    def __init__(self,long,weith):
        self.long = long
        self.weith = weith
    def mj(self):
        mj = self.long*self.weith
        zc = 2*self.long+2*self.weith
        return mj,zc
jx1 = jx(3,4)
print(jx1.mj())
1.python中對(duì)象的屬性可變(支持增/刪/改/查)
a.查
class Dog:
    def __init__(self,name):
        self.name = name
        self.age = 0
dog1 = Dog('大黃')
dog2 = Dog('小白')

方法一:
對(duì)象.屬性 -- 獲取指定屬性對(duì)應(yīng)的值,如果屬性不存在報(bào)錯(cuò)
AttributeError
print(dog1.name)

方法二:
getattr(對(duì)象,屬性名,默認(rèn)值) -- 獲取指定對(duì)象指定屬性的值,如果屬性不存在,返回默認(rèn)值(默認(rèn)值可以不寫,不存在時(shí)報(bào)錯(cuò))
print(getattr(dog1,'name'))

print(dog1.name)
print(getattr(dog1,'name'))
print(getattr(dog1,'name2','默認(rèn)值'))
b.增/改 -- 屬性存在修改,不存在就增加

方法一:
對(duì)象.屬性 = 值 -- 屬性不存在增加屬性,屬性存在就修改屬性的值

方法二:
setattr(對(duì)象,屬性名,值)

dog1.name = '花花'
print(dog1.name)
setattr(dog2,'gender','雄性')
print(dog2.gender)

c.刪

del 對(duì)象.屬性
delattr(對(duì)象,屬性)

# del dog1.name
print(dog1.name)

注意:對(duì)象屬性的增刪改查 只針對(duì)單個(gè)對(duì)象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滞诺,一起剝皮案震驚了整個(gè)濱河市炎辨,隨后出現(xiàn)的幾起案子慕嚷,更是在濱河造成了極大的恐慌监嗜,老刑警劉巖侈贷,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惩歉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俏蛮,警方通過查閱死者的電腦和手機(jī)撑蚌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搏屑,“玉大人争涌,你說我怎么就攤上這事±绷担” “怎么了亮垫?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)伟骨。 經(jīng)常有香客問我饮潦,道長(zhǎng),這世上最難降的妖魔是什么携狭? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任继蜡,我火速辦了婚禮,結(jié)果婚禮上逛腿,老公的妹妹穿的比我還像新娘稀并。我一直安慰自己,他們只是感情好单默,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布碘举。 她就那樣靜靜地躺著,像睡著了一般搁廓。 火紅的嫁衣襯著肌膚如雪引颈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天枚抵,我揣著相機(jī)與錄音线欲,去河邊找鬼。 笑死汽摹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苦锨。 我是一名探鬼主播逼泣,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼趴泌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了拉庶?” 一聲冷哼從身側(cè)響起嗜憔,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氏仗,沒想到半個(gè)月后吉捶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皆尔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年呐舔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慷蠕。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡珊拼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出流炕,到底是詐尸還是另有隱情澎现,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布每辟,位于F島的核電站剑辫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渠欺。R本人自食惡果不足惜揭斧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峻堰。 院中可真熱鬧讹开,春花似錦、人聲如沸捐名。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镶蹋。三九已至成艘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贺归,已是汗流浹背淆两。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拂酣,地道東北人秋冰。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像婶熬,于是被迫代替她去往敵國(guó)和親剑勾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子埃撵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章虽另,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 2,739評(píng)論 2 9
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,090評(píng)論 1 32
  • 補(bǔ)充: 編程思想的轉(zhuǎn)變 1.面向過程編程 -- 算法2.函數(shù)式編程 -- 函數(shù)/模塊3.面向?qū)ο缶幊?...
    _C__C_閱讀 66評(píng)論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,783評(píng)論 1 10
  • 一 我固執(zhí)地想回到最初 想恢復(fù)一切從前的模樣 可我明明知道 最涼不過人心 最薄不過人情 時(shí)光不可回復(fù) 終究一場(chǎng)離別...
    零琋閱讀 345評(píng)論 1 12