Python使用類(class)和對象(object)汰具,進(jìn)行面向?qū)ο螅╫bject-oriented?programming,簡稱OOP)的編程。
面向?qū)ο笞钪匾母拍罹褪穷悾–lass)和實(shí)例(Instance),必須牢記類是抽象的模板冲簿,比如Student類,而實(shí)例是根據(jù)類創(chuàng)建出來的一個個具體的“對象”亿昏,每個對象都擁有相同的方法,但各自的數(shù)據(jù)可能不同档礁。
在 python 中 定義類是用關(guān)鍵字 class
eg ?class Student(subject):
pass
class后面緊接著是類名角钩,即Student,類名通常是大寫開頭的單詞,緊接著是(object)递礼,表示該類是從哪個類繼承下來的惨险,繼承的概念我們后面再講,通常脊髓,如果沒有合適的繼承類辫愉,就使用object類,這是所有類最終都會繼承的類将硝。
定義好了Student類恭朗,就可以根據(jù)Student類創(chuàng)建出Student的實(shí)例,創(chuàng)建實(shí)例是通過類名+()實(shí)現(xiàn)的:
>>> bart = Student()
>>> bart<__main__.Studentobjectat0x10a67a590
>>>> Student
可以看到依疼,變量 bart指向的就是一個Student的實(shí)例痰腮,后面的 0x10a67a590 是內(nèi)存地址,每個object的地址都不一樣律罢,而Student本身則是一個類膀值。
可以自由地給一個實(shí)例變量綁定屬性,比如误辑,給實(shí)例bart綁定一個name屬性:
>>> ?bart.name ='Bart Simpson'
>>> bart.name
Bart Simpson'
由于類可以起到模板的作用沧踏,因此,可以在創(chuàng)建實(shí)例的時(shí)候巾钉,把一些我們認(rèn)為必須綁定的屬性強(qiáng)制填寫進(jìn)去翘狱。通過定義一個特殊的__init__方法,在創(chuàng)建實(shí)例的時(shí)候睛琳,就把name盒蟆,score等屬性綁上去:
class Student(object):
def__init__(self, name, score):
self.name = name? ? ? ?
?self.score = score
和普通的函數(shù)相比,在類中定義的函數(shù)只有一點(diǎn)不同师骗,就是第一個參數(shù)永遠(yuǎn)是實(shí)例變量self历等,并且,調(diào)用時(shí)辟癌,不用傳遞該參數(shù)寒屯。除此之外,類的方法和普通函數(shù)沒有什么區(qū)別黍少,所以寡夹,仍然可以用默認(rèn)參數(shù)、可變參數(shù)厂置、關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù)菩掏。
小結(jié)
類是創(chuàng)建實(shí)例的模板,而實(shí)例則是一個一個具體的對象昵济,各個實(shí)例擁有的數(shù)據(jù)都互相獨(dú)立智绸,互不影響野揪;方法就是與實(shí)例綁定的函數(shù),和普通函數(shù)不同瞧栗,方法可以直接訪問實(shí)例的數(shù)據(jù)斯稳;
將東西根據(jù)屬性歸類(將object歸為class?)
方法是一種屬性,表示動
? ? ? ? ? ? ? ? ?用圖說明 類 對象 和代碼之間的關(guān)系
1 創(chuàng)建對象的過程是什么迹恐?
1)首先挣惰,創(chuàng)建對象,會調(diào)用對象的__new__()函數(shù)殴边,來申請內(nèi)存憎茂,創(chuàng)建對象
2)其次,給創(chuàng)建好的對象找都,初始化對象的數(shù)據(jù)唇辨,自動調(diào)用__init__()函數(shù),給對象的屬性賦值
2 對象是什么能耻?
對象是實(shí)際存在的物體赏枚,也稱為實(shí)體,是類型表示的具體的實(shí)際存在的一個實(shí)例
3.類是什么晓猛?
1) 類饿幅,就是類型、數(shù)據(jù)類型的簡稱戒职,是從一部分實(shí)際存在具有相似的特征和行為的實(shí)物中栗恩,抽象出來的一個概念。
學(xué)習(xí)心得
雖然之前接觸過面向?qū)ο蠛樵铮矁H僅是了解層面上的接觸磕秤,沒用面向?qū)ο髮戇^什么東西。通過今天的案例的學(xué)習(xí)捧韵,感覺面向?qū)ο缶褪且粋€紙老虎市咆,了解---->理解---->在合適時(shí)候使用,這是一個很煎熬也很艱難的過程再来。用面向?qū)ο髮憱|西更多是一樣的框架蒙兰,但也需要學(xué)者學(xué)到一定程度才可以舉一反三。