2018-09-06 Day14-類和對(duì)象01

1、理論上的定義:

類:就是擁有相同功能和屬性的對(duì)象的集合池摧。(抽象)
對(duì)象:類的實(shí)例(具體)

2焦除、從生活角度

如果說人這個(gè)物種是一個(gè)類,那么每一個(gè)人就是一個(gè)對(duì)象作彤。

3踢京、編程方式

面向過程編程:以算法為工具
函數(shù)式編程:以函數(shù)為工具
面向?qū)ο缶幊蹋阂灶惡蛯?duì)象為工具(面向生活)

類:對(duì)擁有相同功能(方法)和相同屬性的封裝。
封裝效果:一個(gè)類中可以對(duì)多個(gè)功能進(jìn)行封裝(多個(gè)函數(shù))宦棺;封裝多個(gè)屬性

一瓣距、類的聲明格式

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

class:聲明類的關(guān)鍵字。
類名:標(biāo)識(shí)符代咸,不能是關(guān)鍵字蹈丸。首字母必須大寫!采用駝峰式命名呐芥。例如:StudentSystem逻杖。
(駝峰式命名:第一個(gè)單詞首字母小寫,其他單詞的首字母大寫)
父類列表:這個(gè)部分可以省思瘟。這是一個(gè)繼承語(yǔ)法荸百,可以多繼承。
類的內(nèi)容:類的方法和屬性滨攻。

二够话、類中的方法

調(diào)用方式:對(duì)象.函數(shù)名()
方法:就是聲明在類中的函數(shù)
方法分類:對(duì)象方法蓝翰,類方法,靜態(tài)方法女嘲。
直接寫在類中的方法畜份,自帶一個(gè) self 參數(shù)
對(duì)象方法:通過對(duì)象來調(diào)用。

三欣尼、構(gòu)造方法

  • 構(gòu)造方法:系統(tǒng)自動(dòng)創(chuàng)建爆雹,方法名和類名一樣。用來創(chuàng)建對(duì)象愕鼓。
  • _init_:方法的功能是用來做初始化和添加對(duì)象屬性钙态。
  • 當(dāng)我們通過構(gòu)造方法去創(chuàng)建對(duì)象的時(shí)候,系統(tǒng)會(huì)自動(dòng)調(diào)用init方法菇晃。
  • 如果類的 init 方法有參數(shù)册倒,通過給構(gòu)造方法傳參。

四谋旦、創(chuàng)建對(duì)象

創(chuàng)建類的時(shí)候剩失,系統(tǒng)會(huì)默認(rèn)創(chuàng)建這個(gè)類對(duì)應(yīng)的構(gòu)造方法(方法名和類名相同)。一個(gè)類可以有多個(gè)對(duì)象册着,只要調(diào)用構(gòu)造方法拴孤,就會(huì)產(chǎn)生新的對(duì)象。

  • 構(gòu)造方法:類名() --> 創(chuàng)建類對(duì)應(yīng)的對(duì)象
  • 通過對(duì)象調(diào)用對(duì)象方法甲捏,默認(rèn)參數(shù) self 不需要傳參演熟。
  • 創(chuàng)建對(duì)象的過程:調(diào)用構(gòu)造方法在內(nèi)存中開辟空間創(chuàng)建一個(gè)對(duì)象,然后用新建的這個(gè)對(duì)象去調(diào)用 init 方法來初始化對(duì)象的屬性司顿,最后才將對(duì)象返回芒粹。
class Person:
    """
    人類
    """
    def eat(self):
        print('人吃飯')
#創(chuàng)建Person類的對(duì)象,并且將對(duì)象的地址存到 p1中
p1 = Person()  
p1.eat()

五大溜、對(duì)象屬性

1化漆、屬性

對(duì)象的屬性:不同的對(duì)象,對(duì)應(yīng)的值可能不一樣钦奋,這樣的屬性是對(duì)象屬性座云。屬于對(duì)象類中的對(duì)象屬性是聲明在 init 方法中的。

  • 聲明格式是:self . 屬性名 = 初始值
  • 對(duì)象的使用:對(duì)象 . 屬性名
方法一
class Student:
    """學(xué)生類"""
    def __init__(self):
        #聲明對(duì)象的屬性name付材,age朦拖,id
        self.name = '張三'
        self.age = 0
        self.id = '001'
stu1 = Student()
print(stu1.name,stu1.age,stu1.id)
#通過對(duì)象去修改對(duì)象的屬性
stu1.name = '星辰'
print(stu1.name)

方法二
class Dog:
    """狗類"""
    def __init__(self, type1, color1):
        self.type = type1
        self.color = color1
dog1 = Dog('土狗','黃色')
print(dog1.type, dog1.color)

方法三
class Computer:
    """電腦類"""
    def __init__(self, color='白色', memory=0):
        self.color = color
        self.memory = memory
com1 = Computer()
print(com1.color,com1.memory)

類的字段(屬性):屬于類,所有對(duì)象對(duì)應(yīng)的值是一樣的厌衔。

2璧帝、屬性的增刪改查

python是動(dòng)態(tài)語(yǔ)言,python中類的對(duì)象的屬性可以進(jìn)行增刪改查的操作富寿。


  • 方法一:對(duì)象.屬性名(常用)
    方法二:getattr(對(duì)象, 屬性名, default=None)
    屬性不存在可以通過設(shè)置默認(rèn)值睬隶,讓程序不崩潰锣夹,并且返回默認(rèn)值。
    方法三:對(duì)象._getattribute_(屬性名)

  • 方法一:對(duì)象.屬性 = 新值(常用)
    方法二:setattr(對(duì)象理疙, 屬性名晕城,值)
    方法三:對(duì)象._setattr_(屬性名泞坦,值)

  • 方法一:對(duì)象.屬性 = 新值(屬性不存在窖贤,就是添加)
    方法二:setattr(對(duì)象, 屬性名贰锁,值)
    方法三:對(duì)象._setattr_(屬性名赃梧,值)

  • 方法一:del 對(duì)象.屬性
    方法二:delattr(對(duì)象,屬性)
    方法三:對(duì)象. _delattr_(屬性)

六豌熄、類的屬性(字段)

1授嘀、類的字段:就是聲明在類的里面,方法的外面的變量

class Person:
  #這個(gè)number就是類的字段
  number = 6

2锣险、什么時(shí)候聲明類的屬性:
屬于類蹄皱,并且對(duì)于類的所有對(duì)象來說是共有的。

3芯肤、怎么使用

print(Person.number)

七巷折、對(duì)象方法

  • 直接聲明在類中的函數(shù)默認(rèn)是對(duì)象方法,有一個(gè)默認(rèn)參數(shù) self
  • 對(duì)象方法要通過對(duì)象來調(diào)用:對(duì)象.對(duì)象方法
  • 對(duì)象方法中默認(rèn)參數(shù) self 崖咨, 不需要傳參锻拘。因?yàn)樵谡{(diào)用這個(gè)方法時(shí),系統(tǒng)自動(dòng)當(dāng)當(dāng)前對(duì)象傳給 self 击蹲。
  • 哪個(gè)對(duì)象調(diào)用署拟,self 就指向誰(shuí)。對(duì)象能做的事情歌豺,self 也能做推穷,本質(zhì)上是一樣的

練習(xí):

# 1、寫一個(gè)矩形類类咧,有屬性長(zhǎng)和寬,功能:求周長(zhǎng)和面積
class Rect:
    def __init__(self, width, weight):
        self.width = width
        self.weight = weight
    def perimeter(self):
        print('周長(zhǎng)是:',(self.weight + self.width)*2)
    def area(self):
        print('面積是:',(self.width*self.weight))
rect1 = Rect(3,4)
rect1.perimeter()
rect1.area()

周長(zhǎng)是: 14
面積是: 12

#2馒铃、寫一個(gè)班級(jí)類,班級(jí)里面有多個(gè)學(xué)生的成績(jī)轮听,可以獲取成績(jī)的最高分
class Class_python:
    def __init__(self,*score):
        self.score = score
    def score_max(self):
        a = list(self.score)
        a.sort()
        print('最高分是:%d'%a[-1])
class1 = Class_python(2,3,4,5,23,43,32,)
class1.score_max()

最高分是:43

八骗露、類的方法

聲明形式:聲明方法前需要使用@classmethod說明。
特點(diǎn):自帶一個(gè)默認(rèn)參數(shù) cls血巍,這個(gè)參數(shù)調(diào)用的時(shí)候不需要傳值萧锉。系統(tǒng)自動(dòng)傳值,誰(shuí)調(diào)用指向誰(shuí)述寡。(因?yàn)橹荒鼙活愓{(diào)用柿隙,所以始終指向當(dāng)前類)
調(diào)用:通過類來調(diào)用 --> 類.類方法()

class Class1:
    #聲明一個(gè)對(duì)象方法
    def class2(self):
        print('這是一個(gè)對(duì)象方法')
    #聲明一個(gè)類方法
    @classmethod
    def class_func(cls):
        print('這是一個(gè)類方法')

九叶洞、靜態(tài)方法

聲明形式:聲明方法前需要使用@staticmethod說明。
特點(diǎn):沒有默認(rèn)參數(shù)
調(diào)用:通過當(dāng)前類調(diào)用 --> 類.靜態(tài)方法()

    @staticmethod
    def static_func():
        print('這是一個(gè)靜態(tài)方法')
調(diào)用
c1 = Class1()
c1.static_func()

十禀崖、怎么選擇三種方法

a衩辟、只要實(shí)現(xiàn)方法的功能需要用到對(duì)象的屬性,我們就使用對(duì)象方法波附;否則就使用靜態(tài)方法或者類方法艺晴。
b、不使用對(duì)象方法的前提下掸屡,如果實(shí)現(xiàn)功能需要用到類的字段封寞,就用類方法。
c仅财、實(shí)現(xiàn)功能既不需要對(duì)象的屬性狈究,又不需要類的字段,就使用靜態(tài)方法盏求。
注意:靜態(tài)方法和類方法劃分不用那么嚴(yán)格抖锥,因?yàn)殪o態(tài)方法能做的,類方法也能使用碎罚;反之亦然磅废。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市魂莫,隨后出現(xiàn)的幾起案子还蹲,更是在濱河造成了極大的恐慌,老刑警劉巖耙考,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谜喊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡倦始,警方通過查閱死者的電腦和手機(jī)斗遏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞋邑,“玉大人诵次,你說我怎么就攤上這事∶锻耄” “怎么了逾一?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肮雨。 經(jīng)常有香客問我遵堵,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任陌宿,我火速辦了婚禮锡足,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壳坪。我一直安慰自己舶得,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布爽蝴。 她就那樣靜靜地躺著沐批,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霜瘪。 梳的紋絲不亂的頭發(fā)上珠插,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天惧磺,我揣著相機(jī)與錄音颖对,去河邊找鬼。 笑死磨隘,一個(gè)胖子當(dāng)著我的面吹牛缤底,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播番捂,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼个唧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了设预?” 一聲冷哼從身側(cè)響起徙歼,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鳖枕,沒想到半個(gè)月后魄梯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宾符,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年酿秸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魏烫。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辣苏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哄褒,到底是詐尸還是另有隱情稀蟋,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布呐赡,位于F島的核電站退客,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏罚舱。R本人自食惡果不足惜井辜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一绎谦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粥脚,春花似錦窃肠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至树灶,卻和暖如春纤怒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背天通。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工泊窘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人像寒。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓烘豹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诺祸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子携悯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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

  • 類和對(duì)象 理論上的定義類: 擁有相同功能和相同屬性的對(duì)象的集合(類是抽象的)對(duì)象: 類的實(shí)例(對(duì)象是具體的) 生活...
    rzlong閱讀 191評(píng)論 0 0
  • 1.類的聲明 類:對(duì)擁有相同功能(方法)和相同屬性的封裝 封裝效果:一個(gè)類中可以對(duì)多個(gè)功能進(jìn)行封裝(多個(gè)函數(shù));封...
    xaidc閱讀 81評(píng)論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,105評(píng)論 1 32
  • 我喜歡旅行,發(fā)現(xiàn)和探索未知的世界胃夏,我的生活在不斷地移動(dòng)轴或。但如果有一個(gè)地方能讓我永遠(yuǎn)的停住腳步,那必定是這個(gè)世界上最...
    Holiday歷險(xiǎn)記閱讀 712評(píng)論 14 15
  • 最近在看《康熙王朝》,對(duì)周培公這個(gè)人物很有感觸悼瘾,一生鞠躬盡瘁囊榜,粉身碎骨為大清奉獻(xiàn),幫助康熙平三藩亥宿,解京城之危卸勺,卻因...
    開拓者2021閱讀 190評(píng)論 0 0