day14-總結(jié)

類和對(duì)象

1.什么是類,什么是對(duì)象

類就是擁有相同功能和相同屬性的對(duì)象的集合 - 類是抽象的
對(duì)象就是類的實(shí)例 - 對(duì)象是具體的
如果說(shuō)人是一個(gè)類,李白就是一個(gè)對(duì)象,李牧是另一個(gè)對(duì)象
如果說(shuō)整數(shù)是一個(gè)類,100是一個(gè)對(duì)象,2是另外一個(gè)對(duì)象

2.類的聲明

1)語(yǔ)法
class 類名:
類的內(nèi)容

2)說(shuō)明
class - 關(guān)鍵字
類命 - 程序員自己命名:是標(biāo)識(shí)符但不能是關(guān)鍵字(要求)
采用駝峰式命名(studentName, 不要求首個(gè)字母大寫),并且首字母大寫(StudentName)
見(jiàn)名知義
類的內(nèi)容 - 包含類的說(shuō)明文檔,類中的函數(shù)(相同功能),類的屬性(相同屬性)

3.創(chuàng)建對(duì)象

1)語(yǔ)法
對(duì)象 = 類()

對(duì)象方法

1.類中的函數(shù)

聲明在類中的函數(shù)又叫方法,類中的方法分為三種:對(duì)象方法、類方法、靜態(tài)方法

1)對(duì)象方法
直接聲明在類中函數(shù),自帶一個(gè)self參數(shù)。
對(duì)象方法需要通過(guò)'對(duì)象.函數(shù)名()'的方式調(diào)用
通過(guò)對(duì)象調(diào)用對(duì)象方法的時(shí)候,self不需要傳參;系統(tǒng)會(huì)自動(dòng)將當(dāng)前對(duì)象傳給self(誰(shuí)調(diào)用指向誰(shuí))

init方法

什么是init方法

init是類中的一個(gè)魔法方法,在創(chuàng)建對(duì)象的時(shí)候會(huì)被自動(dòng)調(diào)用

類中的屬性

1.類中的屬性:對(duì)象屬性、字段

1)字段
a.怎么聲明:聲明在類的里面,函數(shù)的外面的變量,就是字段
b.怎么使用:通過(guò)類.字段的方式使用
c.什么時(shí)候用:屬性值不會(huì)因?yàn)閷?duì)象不同而不一樣,這樣的屬性就聲明成類的字段

2)對(duì)象屬性
a.怎么聲明:以'self.屬性名=值'的方式聲明init方法中
b.怎么使用:通過(guò)'對(duì)象.屬性名'的方式去使用
c.什么時(shí)候用:屬性值會(huì)因?yàn)閷?duì)象不同而不一樣,這樣的屬性就聲明為對(duì)象屬性

class Person:
    # num就是類的字段
    num = 61


# print(num)  NameError: name 'num' is not defined
print(Person.num)   # 61
Person.num = 100
print(Person.num)   # 重新賦值  100

print('對(duì)象屬性===============')
class Person:
    # num就是類的字段
    num = 61

    def __init__(self):
        # 這兒的name,age和gender就是Person類的對(duì)象屬性
        self.name = ''
        self.aeg = 0
        self.gender = '男'

對(duì)象屬性的增刪改查

1.對(duì)象屬性

python中對(duì)象屬性支持增刪改查操作

class Person:
    def __init__(self, name, age=0, gender='男'):
        self.name = name
        self.age = age
        self.gender = gender

p1 = Person('小明', 18)
p2 = Person('小花', 20 ,'女')

2.查 - 獲取對(duì)象屬性的值

1)對(duì)象.屬性 - 獲取對(duì)象指定的值,如果不存在,報(bào)錯(cuò)
2)getattr(對(duì)象,屬性名) - 獲取對(duì)象指定的值,如果不存在,報(bào)錯(cuò)
getattr(對(duì)象,屬性名, 默認(rèn)值) - 獲取對(duì)象指定屬性的值,如果屬性不存在,不會(huì)報(bào)錯(cuò)而是返回默認(rèn)值

# 1)對(duì)象.屬性
print(p1.name)   # 小明
# print(p1.name33)   # AttributeError: 'Person' object has no attribute 'name33'
# 2)getattr(對(duì)象,屬性名)
print(getattr(p1, 'name'))   # 小明
# print(getattr(p1, 'name22'))   # AttributeError: 'Person' object has no attribute 'name22'
print(getattr(p1, 'name22', '001'))  # 001

# value = input('請(qǐng)輸入要獲取的屬性名:')
# print(getattr(p1, value))

3.增/改 - 給對(duì)象添加屬性/修改對(duì)象屬性的值

1)對(duì)象.屬性 = 值 - 當(dāng)屬性不存在就給對(duì)象添加屬性;如果屬性存在就修改屬性的值
2)setattr(對(duì)象,屬性名,值) - 當(dāng)屬性不存在就給對(duì)象添加屬性;如果屬性存在就修改屬性的值

4.刪 - 刪除對(duì)象屬性

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

內(nèi)置類屬性

什么是內(nèi)置類屬性

創(chuàng)建類的時(shí)候,系統(tǒng)自動(dòng)為這個(gè)類提供的屬性

class Person:
    """說(shuō)明文檔:人類"""
    num = 61
    def __init__(self, name, age=0, gender='女'):
        self.name = name
        self.age = age
        self.gender = gender

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

1.name

類的字段,獲取類的名字

print(Person.__name__)   # 'Person' 字符串、
print(Person)  # <class '__main__.Person'>  類型

2.doc

類的字段,獲取類的說(shuō)明文檔

print(Person.__doc__)   # 說(shuō)明文檔:人類
# print(int.__doc__)  # 打印出int類的說(shuō)明文檔

3__class__

對(duì)象屬性,獲取對(duì)象對(duì)應(yīng)的類

c1 = p1.__class__
print(c1)   # <class '__main__.Person'>
p2 = c1('小花')
print(p1, p2) # <'name': 'Tom', 'age': 18, 'gender': '男'> <'name': '小花', 'age': 0, 'gender': '女'>
print(c1.num, Person.num)   # 61   61

4.dict

1)類的字段,獲取類中的字段(用得少)
2)對(duì)象屬性,獲取對(duì)象的所有屬性和其對(duì)應(yīng)的值,以字典的形式返回(用得多)
注意:如果給類slots屬性賦了值,那么這個(gè)類的對(duì)象就不能使用dict去獲取所有屬性

print(Person.__dict__)
print(p1.__dict__)  # {'name': 'Tom', 'age': 18, 'gender': '男'}

5.module

類的字段,獲取類所在的模塊(類是在哪個(gè)py文件中聲明的),返回的是模塊名

print(Person.__module__)   # __main__  表明類在當(dāng)前模塊聲明
print(int.__module__)  # builtins

6.bases

類的字段,獲取當(dāng)前類的父類

print(Person.__bases__)   # (<class 'object'>,) 是個(gè)元組   所有類的基類(祖先)都是object
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、異常(exception) 1.異常捕獲 正常情況下程序出現(xiàn)異常,程序會(huì)直接崩潰,不能接著往后執(zhí)行; 異常捕獲...
    墨2019418閱讀 233評(píng)論 0 0
  • """author = Zard""" 1.編程思想 1)面向過(guò)程編程:算法和邏輯2)面向?qū)ο缶幊蹋侯惡蛯?duì)象 -...
    Zard泉水閱讀 213評(píng)論 0 0
  • 1.異常 1.1 定義 正常情況下程序出現(xiàn)異常,程序會(huì)直接崩潰,不能接著往后執(zhí)行。異常捕獲就是為了程序出現(xiàn)異常的時(shí)...
    XXXXStone閱讀 197評(píng)論 0 0
  • 01.recode 1.類和對(duì)象的概念 類:擁有相同的功能和相同屬性的對(duì)象的集合對(duì)象:類的實(shí)例 2.類的聲明 cl...
    Gary134閱讀 266評(píng)論 0 0
  • 1.什么是類,什么是對(duì)象 1.什么是類: 類是擁有相同功能和相同屬性的對(duì)象的集合(抽象的,一種概念) 2.什么是對(duì)...
    小逗比的奮斗史閱讀 404評(píng)論 0 0

友情鏈接更多精彩內(nèi)容