1吓揪、類的定義:類就是擁有相同功能和相同屬性的對象的集合鲁僚。 —— 類是抽象的
2动漾、對象:類的實例搬俊。 —— 具體的
生活角度看類和對象刻坊。
如果人是類方仿,某個人就是對象征字。
如果電腦是類,對象就是具體到某一臺電腦计寇。
2锣杂、類的聲明
語法:
class 類名:
類的類容
說明
class ——聲明類的關(guān)鍵字脂倦。
類名 —— 標識符,不能是關(guān)鍵字元莫, 見名知義赖阻、首字母大寫,駝峰式命名踱蠢。
:冒號—— 固定寫法
類的類容——主要包含:類的說明文檔火欧、屬性(普通變量)、功能(函數(shù))茎截。
class Person:
"""人類"""
# ===========屬性===========
# ===========方法============
def eat(self):
print(‘人吃’+ food)
p1 = Person() # p1 就是Person類的 對象
============調(diào)用類方法苇侵。===========
@classmethond
def destroy(cls):
print(‘人類破壞環(huán)境’)
Person.destroy()
===========靜態(tài)方法=======
@staticemthod
def beat_animal():
print(‘人類毆打小動物’)
調(diào)用:靜態(tài)方法
Person.beat_animal()
對象怎么聲明
對象 = 類名() —— 創(chuàng)建指定的類對應的對象。
類中的方法:
1企锌、方法:聲明在類中的函數(shù)就是方法榆浓。
類中的方法有3種:對象方法、類方法霎俩、靜態(tài)方法哀军。
a沉眶、對象方法:直接聲明在類中的函數(shù)打却。有默認參數(shù)self
通過類的對象來調(diào)用 —— 對象 . 對象方法()
有默認方法self,參數(shù)通過對象調(diào)用的時候谎倔,這個參數(shù)不用傳參柳击,系統(tǒng)會自動將當前對象傳給self。
self片习,當前對象捌肴,誰調(diào)用self就只向誰。當前對象能做的事情藕咏,self都可以做状知。
b、類方法: 聲明函數(shù)前加@classmethod
有默認參數(shù) cls ——通過類調(diào)用的時候孽查,這個參數(shù)不用傳參饥悴,因為系統(tǒng)會自動將當前類傳遞給它。
(cls盲再,當前類 —— 誰調(diào)用就指向誰西设, 當前類能做的事,cls都可以做)
通過類來調(diào)用:類 . 類方法()
c答朋、靜態(tài)方法:聲明前加@staticmethod
沒有默認參數(shù)
通過類來調(diào)用:類 . 靜態(tài)方法()
===================================================================================================================
1贷揽、init方法: 類中默認繼承的一個魔法方法——用來初始化類; 本質(zhì)是對象方法,不需要程序員自己調(diào)用梦碗,會被自動調(diào)用禽绪。
通過創(chuàng)建對象的時候(通過構(gòu)造方法創(chuàng)建對象)蓖救,系統(tǒng)會自動調(diào)用類中的__init__
創(chuàng)建對象的時候,需不需要參數(shù)印屁,需要幾個參數(shù)看類的__init__方法藻糖。
什么時候調(diào)用 —— 通過類創(chuàng)建對象的時候,系統(tǒng)會自動調(diào)用類中的 __init__ 方法
(了解) 聲明類的時候系統(tǒng)會自動給我們創(chuàng)建一個函數(shù)库车,這個函數(shù)的函數(shù)名和聲明的類的類名一樣 — 這個函數(shù)叫構(gòu)造方法巨柒。
函數(shù)中會現(xiàn)在內(nèi)存中開辟空間創(chuàng)建對象,然后用創(chuàng)建的對象去調(diào)用類的 __init__ 方法柠衍,最后將對象返回洋满。
class Person:
def __init__(self,name):
print('init方法')
p1 = Person() #:
========================================================================================================
類的屬性:
類中的屬性分為:對象屬性珍坊、字段牺勾。
字段:直接聲明在類中的變量,叫字段阵漏。
使用:通過 類.字段 的方式來使用驻民。
當類中屬性的值不會因為對象不同而不同,這種屬性就可以聲明稱類的字段履怯。
class dog:
numbers = 10 #這個numbers就是字段回还。
dog.numbers = 100
print(dog.numbers)
對象屬性:
聲明:在 __init__ 方法中,以 self.屬性 = 值 的形式聲明叹洲。
使用:———— 對象.屬性 的方式來使用柠硕。
什么時候用:當屬性的值會因為對象不同,而不同的時候运提,使用對象屬性(比如age蝗柔,name等)。
class Dog:
def __init__ (self民泵,color1='白色'癣丧,gender1=‘公狗’,age1=‘0’):
self.color = name1
self.gender = gender1
self.age = age1
dog1 = Dog
print(dog1.color) #白色
聲明類的時候,方法的選擇:
1栈妆、對象方法:實現(xiàn)函數(shù)的功能需要用到對象屬性胁编,使用對象方法。
2签钩、類方法:實現(xiàn)函數(shù)的功能不需要對象屬性掏呼。但是需要類的相關(guān)操作(字段),就是用類方法铅檩。
3憎夷、靜態(tài)方法:實現(xiàn)函數(shù)的功能,不需要對象屬性昧旨,也不需要類相關(guān)的操作拾给,使用靜態(tài)方法祥得。
===============================================================================================
屬性的操作
python中的對象屬性,支持增蒋得、刪级及、改、查额衙。
class Dog:
def __init__(self,name):
self.name = name
self.age = 0
dog1 = Dog(大黃)
dog2 = Dog(財財)
1饮焦、查
a.對象.屬性 獲取指定屬性對應的值,如果屬性不存在會報錯窍侧。
print(dog1.name) # 大黃
b县踢、getattr(對象,屬性名伟件,默認值)——獲取指定對象指定屬性對應的值硼啤,當屬性不存在不會報錯,返回默認值斧账。
如果沒有設置默認值谴返,會報錯。
print(getattr(dog1,'name')) # 大黃
print(getattr(dog1,'name2',100)) #100
2咧织、增嗓袱、改
a、對象.屬性 = 值 —— 當屬性不存在的時候添加屬性拯爽,當屬性存在的時候索抓,修改屬性的值钧忽。
dog1.gender = '母狗'
print( dog1.gende) 會添加 母狗
dog1.name = '貝貝'
print(dog1.name) #貝貝
b毯炮、setattr(對象,屬性名耸黑,值) —— 當屬性不存在就添加屬性桃煎,當屬性存在修改屬性的值。
3大刊、刪
a为迈、del 對象,屬性
b缺菌、delattr(對象葫辐,屬性名)
注意:對象屬性的增刪改查只針對單個對象。
day13_class
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晕鹊,“玉大人松却,你說我怎么就攤上這事〗埃” “怎么了玻褪?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長公荧。 經(jīng)常有香客問我带射,道長,這世上最難降的妖魔是什么循狰? 我笑而不...
- 正文 為了忘掉前任窟社,我火速辦了婚禮,結(jié)果婚禮上绪钥,老公的妹妹穿的比我還像新娘灿里。我一直安慰自己,他們只是感情好程腹,可當我...
- 文/花漫 我一把揭開白布匣吊。 她就那樣靜靜地躺著,像睡著了一般寸潦。 火紅的嫁衣襯著肌膚如雪色鸳。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼狐血,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了易核?” 一聲冷哼從身側(cè)響起匈织,我...
- 正文 年R本政府宣布,位于F島的核電站牵辣,受9級特大地震影響摔癣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纬向,卻給世界環(huán)境...
- 文/蒙蒙 一择浊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逾条,春花似錦琢岩、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吃警,卻和暖如春糕篇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汤徽。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 補充: 編程思想的轉(zhuǎn)變 1.面向過程編程 -- 算法2.函數(shù)式編程 -- 函數(shù)/模塊3.面向?qū)ο缶幊?...
- 01-class and object 類和對象 02-object attribute and init met...
- 首先輸入文件格式如下下圖债蓝。 代碼如下壳鹤,這個流程是根據(jù)sentieon提供的流程稍加改動而來,這里不再對每一步進行解...
- 學習結(jié)束饰迹,回到家九點半了芳誓,孩子已經(jīng)睡著了余舶。 書包依舊孤單的蜷縮在沙發(fā)上,拉鏈的口都沒被小主人拉開過锹淌,書本文...