day-14總結(jié)

'''

1.類:擁有相同功能和相同屬性的對(duì)象的集合 - 類是抽象

對(duì)象:就是類的實(shí)例 - 對(duì)象是具體

'''

2.類的聲明

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

2)說明
class - 關(guān)鍵字
類名 - 隨便命名;是標(biāo)識(shí)符但不能是關(guān)鍵字(要求)
采用駝峰式命名宰衙,并且首字母大寫.例如:StudentName
見名知義
類的內(nèi)容 - 包含類的說明文檔蟹肘、類中的函數(shù)(相同的功能)呻拌、類中的屬性(相同的屬性)
'''


class Person:
    """類的說明文檔:人類"""
    def eat(self):
        print('吃飯')


##### 3.創(chuàng)建對(duì)象
'''
1)
對(duì)象 = 類()
'''
p1 = Person()
# 同一個(gè)類可以有多個(gè)對(duì)象
p2 = Person()

對(duì)象方法

1.類中的函數(shù)

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

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

'''


class Person:
    def eat(self):
        # self = p1
        print('吃飯')

    def run(self):
        # self = p1
        print('跑步')

    def study(self, subject: str):
        print('學(xué)習(xí)'+subject)


p1 = Person()
p1.eat()
p1.run()
p1.study('python')
強(qiáng)調(diào): 不要用類去調(diào)用對(duì)象方法

1.init方法

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

如果init方法中除了self以外還有其他參數(shù)茬缩,需要通過構(gòu)造方法來給__ init__方法傳參
'''



class Person:
    def __init__(self):
        print('init方法被調(diào)用')


p1 = Person()    # Person()1.開辟空間創(chuàng)建對(duì)象 2.使用創(chuàng)建好的對(duì)象調(diào)用init方法(做一些初始化操作)3.返回對(duì)象
p2 = Person()

類中的屬性

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

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

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


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

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


print(Person.num)
Person.num = 100
print(Person.num)

p1 = Person()
p1.name = '帥'
p2 = Person()
p2.name = '小帥'
print(p1.name, p2.name)


class Dog:
    def __init__(self, name1, age1, color1, breed1):
        self.name = name1
        self.age = age1
        self.color = color1
        self.breed = breed1
dog1 = Dog('老豬', 3, '黃色', '土狗')
print(dog1.name)


class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.score = 0
        self.study_id = '001'


    def __repr__(self):
        return '<%s>' % str(self.__dict__)[1:-1]
#         重寫repr方法,來定制對(duì)象的打印格式(默認(rèn)對(duì)象地址)
#         返回值必須是字符串
stu1 = Student('小明', '15424312')
print(stu1.age)
stu1.score = 100
print(stu1.score)

練習(xí):聲明一個(gè)矩形類寡夹, 有屬性:長和寬, 方法:計(jì)算矩形的周長和面積

class Rect:
    def __init__(self, long, wide):
        self.long = long
        self.wide = wide
        # self.perimeter = (long + wide) * 2
        # self.area = long * wide
    def get_area(self):
        return self.long * self.wide

    def get_perimeter(self):
        return (self.long+self.wide)*2

p1 = Rect(5, 2)
print(p1.get_area())
print(p1.get_perimeter())





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

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


p1 = Person('小明', 18)
p2 = Person('小紅', 20)
p1.eat('蘋果')
p2.eat('西瓜')

對(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)值
'''

print(p1.name)
print(getattr(p1, 'name'))
print(getattr(p1, 'idcard', '001'))

value = 'name'
print(getattr(p1, value))

3.增、改

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

p1.name = 'xiaoming'
print(p1.name)

p1.id_card = '111'
print(p1.id_card)


setattr(p1, 'age', 30)
print(p1.age)

setattr(p1, 'height', 190)
print(p1.height)

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

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

del p1.gender


delattr(p1, 'name')


# 注意:屬性的增刪改查只針對(duì)當(dāng)前對(duì)象有效殴边,不會(huì)作用于其他對(duì)象



class Dog:
    #  # 可以通過給類的__slots__字段賦值,來約束當(dāng)前類的對(duì)象最多有哪些屬性
    __slots__ = ('name', 'age')

    def __init__(self, name, age):
        self.name = name
        self.age = age

dog1 = Dog('小黑', 15)
print(dog1.name, dog1.age)

內(nèi)置類屬性

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

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

class Preson:
    """人類"""
    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))

    # def __repr__(self):
    #     return '<%s>' % str(self.__dict__)[1:-1]
p1 = Preson('Tom', 18, '男')
1.name

'''
類的字段锤岸,獲取類的名字
'''
print(Preson.name)

2.doc

'''
類的字段,獲取類的說明文檔
'''
print(Preson.doc)

3.class

'''
對(duì)象屬性板乙,獲取對(duì)象對(duì)應(yīng)的類
'''
c1 = p1.class
print(c1)

4.dict

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

5.module

'''
類的字段蛋铆,獲取類所在的模塊(類是在哪個(gè)py文件中聲明的,返回的是模塊名)
'''
print(Preson.module)
print(int.module)

6.bases

'''
類的字段饿幅,獲取當(dāng)前類的父類
'''
print(Preson.bases)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市戒职,隨后出現(xiàn)的幾起案子栗恩,更是在濱河造成了極大的恐慌,老刑警劉巖洪燥,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磕秤,死亡現(xiàn)場離奇詭異,居然都是意外死亡捧韵,警方通過查閱死者的電腦和手機(jī)市咆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來再来,“玉大人蒙兰,你說我怎么就攤上這事∶⑴瘢” “怎么了搜变?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長针炉。 經(jīng)常有香客問我挠他,道長,這世上最難降的妖魔是什么篡帕? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任殖侵,我火速辦了婚禮,結(jié)果婚禮上镰烧,老公的妹妹穿的比我還像新娘拢军。我一直安慰自己,他們只是感情好怔鳖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布茉唉。 她就那樣靜靜地躺著,像睡著了一般败砂。 火紅的嫁衣襯著肌膚如雪赌渣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天昌犹,我揣著相機(jī)與錄音坚芜,去河邊找鬼。 笑死斜姥,一個(gè)胖子當(dāng)著我的面吹牛鸿竖,可吹牛的內(nèi)容都是我干的沧竟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼缚忧,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼悟泵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闪水,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤糕非,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后球榆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朽肥,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年持钉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衡招。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡每强,死狀恐怖始腾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情空执,我是刑警寧澤浪箭,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站脆烟,受9級(jí)特大地震影響山林,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邢羔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桑孩。 院中可真熱鬧拜鹤,春花似錦、人聲如沸流椒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宣虾。三九已至惯裕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绣硝,已是汗流浹背蜻势。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹉胖,地道東北人握玛。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓够傍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挠铲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冕屯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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