1 知識(shí)點(diǎn):Object Oriented Programming (OOP)
類和示例的區(qū)別:群體和個(gè)體的區(qū)別。
萬(wàn)事萬(wàn)物沃呢,皆為對(duì)象。
注意:類是對(duì)象某抓,由類生成的實(shí)例惰瓜,也是對(duì)象。
對(duì)比
面向過(guò)程編程:首先分析出解決問(wèn)題所需要的步驟(即“第一步做什么备禀,第二步做什么奈揍,第三步做什么”),然后用函數(shù)
實(shí)現(xiàn)各個(gè)步驟另患,再依次調(diào)用蛾绎。
面向?qū)ο缶幊?/strong>:不是考慮執(zhí)行過(guò)程鸦列,而是考慮先創(chuàng)建類鹏倘、定義好屬性、方法(是什么和能做什么)
舉個(gè)栗子:奶牛和黃牛都是牛
上面這句話隱含的共識(shí):奶牛和黃牛都屬于牛這個(gè)類骆姐。
屬性(attribute
):有什么特征夕吻,比如體重大,都吃草
方法(method
):有哪些行為和作用归园,比如能站著睡覺(jué)...
class Computer:
screen = True
def start(self):
print('電腦正在開機(jī)中……')
# 類名首字母大寫
class Chinese:
# 用賦值語(yǔ)句稚矿,創(chuàng)建類的屬性
eye = 'black'
# 創(chuàng)建實(shí)例方法時(shí),不要漏了 self
def eat(self):
print('吃飯桥爽,選擇用筷子昧识。')
注:
- 類名的首字母要大寫
1.1 關(guān)于 self
的解釋
- 實(shí)例方法的創(chuàng)建語(yǔ)句,和函數(shù)的定義語(yǔ)句很類似缀去,唯一不同的是:實(shí)例方法中有個(gè)必須放在首位的參數(shù)
self
- 參數(shù)
self
的特殊之處:在定義時(shí)不能丟甸祭,在調(diào)用時(shí)要忽略 - 參數(shù)
self
的作用:self
會(huì)接收實(shí)例化過(guò)程中傳入的數(shù)據(jù),當(dāng)實(shí)例對(duì)象創(chuàng)建后咏雌,實(shí)例便會(huì)代替self
校焦,在代碼中運(yùn)行。
類的實(shí)例化與調(diào)用
Liu_Xiang = Chinese()
print(type(Liu_Xiang))
Liu_Xiang.eat()
self
的作用相當(dāng)于先給實(shí)例占了個(gè)位置熏迹,等到實(shí)例創(chuàng)建好就“功成身退凝赛,退位讓賢”,其存在是為了方便數(shù)據(jù)的流轉(zhuǎn)捆昏。
參數(shù)內(nèi)部調(diào)用
# 類名首字母大寫
class Chinese:
# 用賦值語(yǔ)句毙沾,創(chuàng)建類的屬性
eye = 'black'
# 創(chuàng)建實(shí)例方法時(shí),不要漏了 self
def eat(self):
print(self.eye)
print('吃飯寇仓,選擇用筷子烤宙。')
2 初始化方法
定義初始化方法的格式:def __init__(self)
初始化方法的作用在于:當(dāng)每個(gè)實(shí)例對(duì)象創(chuàng)建時(shí),該方法內(nèi)的代碼無(wú)須調(diào)用就會(huì)自動(dòng)運(yùn)行躺枕。
class Chinese:
def __init__ (self, mouth, eye):
self.mouth = mouth # self.不能丟
self.eye = eye
def body(self):
print('我有%s張嘴巴' % self.mouth)
print('我有%s只眼睛' % self.eye)
person = Chinese(1, 2)
person.body()
>>> 我有1張嘴巴
>>> 我有2只眼睛
如果我們需要傳入的數(shù)據(jù)能在類中長(zhǎng)久保存并能被隨時(shí)調(diào)用拐云,初始化方法就是一個(gè)不錯(cuò)的解決方案。
總結(jié):
- 面向?qū)ο缶幊踢m合那種較復(fù)雜叉瘩,尤其是持續(xù)更新的代碼薇缅,且將產(chǎn)生巨大的優(yōu)勢(shì)。
- 面向?qū)ο缶幊掏北瑢⒋a具體的數(shù)據(jù)和處理方法都封裝在類中蓬痒,讓我們不用完全了解過(guò)程也可以調(diào)用類中的各種方法。
“面向?qū)ο缶幊涛嗌荩瑫?huì)為你打開一個(gè)新的世界”。這就相當(dāng)于段譽(yù)的“北冥神功”趋惨。
3 小練習(xí)
下面的程序就可以一次性調(diào)用兩個(gè)方法惦蚊,因此會(huì)同時(shí)打印兩句話讯嫂。
class Chinese:
def __init__(self,hometown,region):
self.hometown = hometown
self.region = region
print('程序持續(xù)更新中……')
def born(self):
print('我生在%s欧芽。'%(self.hometown))
def live(self):
print('我在%s葛圃。'%(self.region))
# 新建方法,調(diào)用上面的兩個(gè)方法(注:方法名可自定義)曲楚。
def citys(self):
self.born()
self.live()
Jame = Chinese('浙江', '上海')
Jame.citys()
自定義一個(gè)復(fù)讀機(jī)機(jī)器人褥符,會(huì)把你的話重復(fù)三遍。
class Robot:
def __init__(self, robot_name, my_name, sentence):
self.robot_name = input('Who am I?')
self.my_name = input('Who are you?')
self.sentence = sentence
print('hello world, tell me what you want')
def say_more(self):
print(self.sentence)
print(self.sentence)
print(self.sentence)
robot = Robot('See you')
robot.say_more()