1.為了更好的理解面向?qū)ο缶幊?,下面以“烤地瓜”為案例,進(jìn)行分析
2.分析“烤地瓜”的屬性和方法
1.示例屬性如下:
·cookedLevel :這是數(shù)字;0~3表示還是生的,超過(guò)3表示半生不熟,超過(guò)5表示已經(jīng)烤好了,超過(guò)8表示已經(jīng)烤成木炭了!我們的地瓜開(kāi)始時(shí)時(shí)生的
·cookedString :這是字符串;描述地瓜的生熟程度
·condiments :這是地瓜的配料列表,比如番茄醬、芥末醬等

2.示例方法如下:
·cook():把地瓜烤一段時(shí)間
·addCondiments():給地瓜添加配料
·__init__():設(shè)置默認(rèn)的屬性
·__str__():讓print的結(jié)果看起來(lái)更好一些

3.定義類(lèi),并且定義__init__()方法

#定義`地瓜`類(lèi)
classSweetPotato:
'這是烤地瓜的類(lèi)'
#定義初始化方法
def__init__(self):
self.cookedLevel =0
self.cookedString ="生的"
self.condiments = []
4.添加"烤地瓜"方法

5.完整代碼



3.應(yīng)用:存放家具
1.分析

2.代碼



總結(jié):如果一個(gè)對(duì)象與另外一個(gè)對(duì)象有一定的關(guān)系,那么一個(gè)對(duì)象可用是另外一個(gè)對(duì)象的屬性
4.保護(hù)對(duì)象的屬性
如果有一個(gè)對(duì)象,當(dāng)需要對(duì)其進(jìn)行修改屬性時(shí),有2種方法
·對(duì)象名.屬性名=數(shù)據(jù)---->直接修改
·對(duì)象名.方法名() ---->間接修改
為了更好的保存屬性安全,即不能隨意修改,一般的處理方式為
·將屬性定義為私有屬性
·添加一個(gè)可以調(diào)用的方法,供調(diào)用


總結(jié)
·Python中沒(méi)有像C++中public和private這些關(guān)鍵字來(lái)區(qū)別公有屬性和私有屬性
·它是以屬性命名方式來(lái)區(qū)分,如果在屬性名前面加了2個(gè)下劃線'__',則表明該屬性是私有屬性,否則為公有屬性(方法也是一樣,方法名前面加了2個(gè)下劃線的話表示該方法是私有的,否則為公有的)。
?5.__del__()方法
創(chuàng)建對(duì)象后,python解釋器默認(rèn)調(diào)用__init__()方法;
當(dāng)刪除一個(gè)對(duì)象時(shí),python解釋器也會(huì)默認(rèn)調(diào)用一個(gè)方法,這個(gè)方法為_(kāi)_del__()方法


結(jié)果:

總結(jié):
·當(dāng)有1個(gè)變量保存了對(duì)象的引用時(shí),此對(duì)象的引用計(jì)數(shù)就會(huì)加1
·當(dāng)使用del刪除變量指向的對(duì)象時(shí),如果對(duì)象的引用計(jì)數(shù)不會(huì)1,比如3,那么此時(shí)只會(huì)讓這個(gè)引用計(jì)數(shù)減1,即變?yōu)?,當(dāng)再次調(diào)用del時(shí),變?yōu)?,如果再調(diào)用1次del,此時(shí)會(huì)真的把對(duì)象進(jìn)行刪除