python0.14-----面向對象思想/類/對象
面向對象思想:
1.把數據及對數據的操作的方法放在一起,作為一個相互依賴的整體--對象。
2.把同類對象抽象出其共性,形成類。例如:老板和員工有很多共性,可以形成一個Person類。
3.類中的大多數數據,只能用本類的方法進行處理。例如:我有100塊,不可能讓你來花。
4.類通過一個簡單的外部接口與外界進行聯系。對象之間通過消息進行通信。
5.程序流程有用戶在使用中決定。
面向過程:
強調的是功能行為,解決問題需要哪些步驟。
例如:蓋房子先活水泥,再砌磚.....
面向對象:
關註的是解決問題需要哪些對象。
例如:要蓋房子的話,只需要找到能蓋房子的人。
把大象關進冰箱的不同思路:
面向過程思想:
1打開冰箱門。
2.將大象關進冰箱。
3.關閉冰箱門。
面向對象思想:
1.找到一個能夠打開冰箱的人。
2.找到能夠將大象關進冰箱的人。
3.找到一個能夠關閉冰箱的人。
因為生活中,很多事情我們不想幹。所以想找一能夠幹這些事情的對象。若不存在這個對象,就創建這個對象。讓它把這些事情幹了,然後我們就完成了這個任務。
例如:
圖紙相當於類,車相當於對象
可以對照圖紙造很多顏色不一樣的車。
同樣,可以通過類造出不同的對象。
類的設計:
只關心3樣東西:
類名:見名知意,首字母大寫,其它遵循駝峰原則。
屬性:見名只意,其它遵循駝峰原則。
行為(方法或功能):見名知意,其它遵循駝峰原則。
例如:老婆的類名為wife,wife的屬性有:名字,年齡等等,其方法有:吃,喝等等。
創建類:
類:一種數據類型,本身並不占內存空間,跟所學過的number,string,booleann等相似。用類創建的實例化對象(變量),對象占內存空間。
格式:
class 類型(父類列表):
屬性
行為
例子:
class Person(object): #object: #object為所有類的父類,一般沒有合適的父類就寫父類。
#定義屬性:
name=""
age=0
height=0
weight=0
#定義方法(定義函數):
#註意:方法的參數必須以self當第一個參數,self代表類的實例(某個對象)。
def run(self):
print(‘run‘)
def eat(self,food)
print(‘eat‘+food)
實例化對象:
格式: 對象名=類名(參數列表) #若沒有參數列表,也不能省略括號
例如:pr1=person()
pr2=person()
註意:對象在堆區,變量在棧區。pr1,pr2在棧區,它們存的是堆區的對象地址。不同的對象在堆區域的地址不同。
訪問對象的屬性和方法:
per=person() #實例化對象per
訪問屬性:
格式:對象名.屬性名
賦值:對象名.屬性名=新值。
per.name=‘bob‘
per.age=18
per.height=160
訪問方法:
格式:對象名.方法名(參數列表)
per.run()
per.eat(‘apple‘)
#題目:設計類實現人開槍射子彈
class Person:
def __init__(self,gun):
self.gun=gun
def fire(self):
self.gun.shoot()
def fillBullet(self):
self.gun.bullet.BulletCount+=1
print(‘填裝了一發‘)
class Gun:
def __init__(self,bullet):
self.bullet=bullet
def shoot(self):
self.bullet.BulletCount-=1
if self.bullet.BulletCount<=0:
print(‘沒有子彈了‘)
else :
print(‘還有%d發‘ %self.bullet.BulletCount)
class Bullet:
def __init__(self,BulletCount):
self.BulletCount=BulletCount
調用:
bullet=Bullet(5)
gun=Gun(bullet)
per=Person(gun)
per.fire()
python0.14-----面向對象思想/類/對象