總結(jié)Day15_類和對象(1)

===編程思想===

1.面向過程編程 - 遇到問題直接將邏輯轉(zhuǎn)換成代碼; 邏輯思維,算法
2.函數(shù)式編程 - 遇到問題就想找一個豌习、寫一個擁有相應(yīng)功能的函數(shù); 以函數(shù)作用工具
3.面向?qū)ο缶幊?- 遇到問題就考慮可以不可以有一個類來給我提供相應(yīng)的功能和數(shù)據(jù); 以類和對象為工具

??python既支持函數(shù)式編程也支持面向?qū)ο缶幊?/p>

===認識類和對象===

1.什么是類苏潜,什么是對象

??類就是擁有相同功能和相同屬性的對象的集合; 類是抽象的
??對象就是類的實例; 對象是具體的

2.類的聲明

??類中的內(nèi)容包含功能(函數(shù))和屬性(變量/屬性)
??a.語法
??class 類名:
????類的內(nèi)容

??b.說明
??class - python聲明類的關(guān)鍵字
??類名 - 要求:標識符, 不能是關(guān)鍵字
? ? ?? 規(guī)范:駝峰式命名(通過首字母大寫來區(qū)分不同的單詞); 第一個字母要大寫
??: - 固定寫法
??類的內(nèi)容 - 包含類的方法银萍、屬性和說明文檔
? ? ? ???方法就是聲明在類中的函數(shù)
? ?? ?? ?屬性就是聲明在類中的變量

3.對象的聲明

??語法:
??類名() - 創(chuàng)建指定的類的對象并且返回

===對象方法===

??class 類名:
????類中的屬性
????類中的方法

1.類中的方法

??聲明在類中的函數(shù)就是方法
??類中的方法包括: 對象方法(實例方法), 類方法, 靜態(tài)方法

2.對象方法:

a.什么是對象方法
??直接聲明在類中的方法就是對象方法
??有默認參數(shù)self
??通過'對象.方法()'的方式來調(diào)用(對象方法要通過對象來調(diào)用)

b.參數(shù)self
??當我們通過對象調(diào)用對象方法的時候,self不需要傳參;因為系統(tǒng)會自動將當前對象傳遞給self恤左。
??當前對象:調(diào)用當前方法的對象(誰調(diào)用對象方法self就是誰)
??注意:當前類的對象能做的事情self都能做

===init方法和構(gòu)造方法===

1.init方法: init

??init方法是類中的一個特殊的對象方法,專門用來對象創(chuàng)建的對象進行初始化贴唇。
??當通過類創(chuàng)建對象的時候搀绣,系統(tǒng)就會自動調(diào)用init方法

2.構(gòu)造方法

a.什么是構(gòu)造方法
??函數(shù)名和類名一樣的函數(shù)就是構(gòu)造方法, 專門用來創(chuàng)建對象戳气。
??python中聲明類的時候系統(tǒng)會自動創(chuàng)建這個類對應(yīng)的構(gòu)造方法链患。

b.構(gòu)造方法的執(zhí)行過程
??當我們構(gòu)造方法的時候內(nèi)部會先在內(nèi)存中開辟空間保存對象;然后用創(chuàng)建的這個對象去調(diào)用inin方法,用來對對象進行初始化;
??init方法調(diào)用結(jié)束后,返回對象.

??def Person(*args, *kwargs):
????對象 = 創(chuàng)建對象
????對象.init(
args, **kwargs)
????return 對象

??注意: 如果類的init方法除了self以外還有其他參數(shù)瓶您,那么我們在創(chuàng)建對象的時候需要通過給構(gòu)造方法來給init方法傳參

===對象屬性===

1.什么是對象屬性

??類中的屬性分為類的字段和對象屬性
a.對象屬性 - 屬性的值會因為對象不同而不一樣麻捻,這種屬性就應(yīng)該聲明為對象屬性
??聲明在init方法中 - 位置
??以'self.屬性名 = 值'的方式來聲明(這兒的屬性就是對象屬性) - 方式
??通過'對象.屬性'的方式來使用 - 使用

b.類的字段 - 屬性的值不會因為對象不同而不同,這種屬性就聲明成類的字段
??直接聲明類的里面呀袱,函數(shù)的外面的變量就是類的字段
??以'字段名 = 值'
??通過'類.字段'的方式來使用

===對象屬性的增刪改查===

??python中對象的屬性支持增刪改查

 # 屬性的增刪改查
class Person:
    def __init__(self, name='', age=0, sex='女'):
        self.name = name
        self.age = age
        self.sex = sex

p1 = Person('小花')
p2 = Person('小紅')
1.查(獲取對象屬性)

??對象.屬性 - 獲取指定對象指定屬性值;當屬性不存在的時候會報錯
??getattr(對象, 屬性名:str, 默認值) - 獲取指定對象指定屬性值;當屬性不存在的時候如果給默認值賦了值贸毕,程序不會報錯,并且將默認值作為結(jié)果

print('==============查===================')
print(p1.name)
# 屬性不確定的時候可以使用getattr
attr = input('屬性:')
print(getattr(p1, attr))

print(getattr(p1, 'name', None))
print(getattr(p1, 'name1', None))
2.增/改

??對象.屬性 = 值 - 當屬性存在的是修改屬性的值夜赵;屬性不存在的時候添加屬性
??setattr(對象, 屬性名, 值) - 當屬性存在的是修改屬性的值明棍;屬性不存在的時候添加屬性

print('==============增/改===================')
# 修改屬性
setattr(p1, 'age', 18)
print(p1.age)
# 添加屬性
setattr(p1, 'weight', 200)
print(p1.weight)
3.刪

??del 對象.屬性
??delattr(對象, 屬性名)

print('==============刪=================')
del p1.sex
# print(p1.sex)  # AttributeError: 'Person' object has no attribute 'sex'

delattr(p1, 'age')
# print(p1.age)  # AttributeError: 'Person' object has no attribute 'age'

# 注意:對象屬性的操作,只針對操作的那一個對象寇僧,不會影響其他對象
print(p1.height)
# print(p2.height)  # AttributeError: 'Person' object has no attribute 'height'
print(p2.age)

===內(nèi)置屬性===

??內(nèi)置屬性指的是我們創(chuàng)建類的時候系統(tǒng)自動給我們添加的屬性(其實是通過繼承獲取到的)

class Person:
    """說明文檔:人類"""
    # 類的字段
    num = 61

    # __slots__ = ('name', 'age', 'sex')

    # 對象屬性
    def __init__(self, name='', age=0, sex='男'):
        self.name = name
        self.age = age
        self.sex = sex

    def eat(self, food):
        print('%s在吃%s' % (self.name, food))

    # 定制對象的打印格式(當我們通過print打印一個對象的時候击蹲,
                       # 實質(zhì)就是打印對象調(diào)用__repr__函數(shù)的返回值)
    # 這個函數(shù)的返回值必須是字符串
    def __repr__(self):
        return '<' + str(self.__dict__)[1:-1] + ' at ' + hex(id(self)) + '>'

p1 = Person('小明', 18)
print(p1)    # print(p1.__repr__())

persons = [Person('p1', 12), Person('p2', 18, '女')]
print(persons)
# 1. 類.__name__  - 獲取的名字(字符串)
print(Person)
class_name = Person.__name__
print(Person, class_name)
# 值是一個字符串,可以當成字符串來用
print(class_name.upper())

# 2. 對象.__class__  - 獲取對象對應(yīng)的類(結(jié)果是類)
# 獲取對象p1的類
my_class = p1.__class__
print(my_class)
# 可以將my_class當成類來使用
p2 = my_class('小花')
print(my_class.num)

# 3. 類.__doc__  - 獲取類的說明文檔(字符串)
print(Person.__doc__)
print(int.__doc__)

# 獲取對象p1對應(yīng)的類的說明文檔
print(p1.__class__.__doc__)

# 4.對象.__dict__  - 將對象轉(zhuǎn)換成字典婉宰,將屬性和值作為字典的鍵值對(字典)
# 注意:當給__slots__屬性賦值后,對象的__dict__屬性就不能使用
print(p1.__dict__)

# 5.類.__module__ - 獲取當前類所在的模塊的模塊名
print(Person.__module__)

# 6.類.__bases__ - 獲取當前類的父類(元祖)
print(Person.__bases__)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末推穷,一起剝皮案震驚了整個濱河市心包,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馒铃,老刑警劉巖蟹腾,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異区宇,居然都是意外死亡娃殖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門议谷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炉爆,“玉大人,你說我怎么就攤上這事卧晓》沂祝” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵逼裆,是天一觀的道長郁稍。 經(jīng)常有香客問我,道長胜宇,這世上最難降的妖魔是什么耀怜? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任恢着,我火速辦了婚禮,結(jié)果婚禮上财破,老公的妹妹穿的比我還像新娘掰派。我一直安慰自己,他們只是感情好狈究,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布碗淌。 她就那樣靜靜地躺著,像睡著了一般抖锥。 火紅的嫁衣襯著肌膚如雪亿眠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天磅废,我揣著相機與錄音纳像,去河邊找鬼。 笑死拯勉,一個胖子當著我的面吹牛竟趾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宫峦,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼岔帽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了导绷?” 一聲冷哼從身側(cè)響起犀勒,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妥曲,沒想到半個月后贾费,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡檐盟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年褂萧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葵萎。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡导犹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陌宿,到底是詐尸還是另有隱情锡足,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布壳坪,位于F島的核電站舶得,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏爽蝴。R本人自食惡果不足惜沐批,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一纫骑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧九孩,春花似錦先馆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宪拥,卻和暖如春仿野,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背她君。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工脚作, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缔刹。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓球涛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親校镐。 傳聞我的和親對象是個殘疾皇子亿扁,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

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