物件導向介紹
一、物件導向和面向過程
面向過程:核心過程二字,過程即解決問題的步驟,就是先幹什麼後幹什麼
基於該思想寫程式就好比在這是一條流水線,是一種機械式的思維方式
優點:複雜的過程流程化
缺點:擴充套件性差
物件導向:核心是物件二字,物件指特徵與技能的結合體
基於該思想編寫程式就好比在創造乙個世界,世界是由乙個個物件組成,是一種『上帝式』的思維方式
優點:可擴充套件性強
缺點:變成複雜度高,極容易出現過度設計的問題
2、類物件是特徵與技能的結合體,類就是一系列物件相似的特徵與技能的結合體
在現實生活中:一定是先有乙個個具體的物件,後總結出類
在程式中:一定是先定義類,後產生物件
#類體**在類的定義階段就會立刻執行
class students:
school = '巨集福教育'
def run(self):
# return 'running......'
print('running....')
stu1 = students()
stu2 = students()
stu3 = students()
print(students.school)#資料屬性
print(students.run)#函式屬性
print(stu1.school)#查詢屬性
stu1.contry = '中國'#新增屬性
del stu1.contry#刪除類屬性
stu1.school = '巨集福'#修改屬性
#例項化出不同屬性的物件
class students:
school = '巨集福教育'
def __init__(self,name, age, job):
self.name = name
self.age = age
self.job = job
def run(self):
# return 'running......'
print('running....')
stu1 = students('張三', 18, 'it')
stu2 = students('王二', 16, 'student')
stu3 = students('趙五', 19, 'teacher')
封裝封裝案例1.
01、封裝
1.封裝是面相對性一大特點
2.物件導向程式設計的第一步--將屬性和方法封裝到乙個抽象的類當中
3.外界使用類建立物件,然後讓物件呼叫方法
4.物件方法的細節都被封裝在類的內部
02、小明愛跑步
需求1.小明體重75公斤
2.小明每次跑步都會**0.5公斤
3.小明每次吃東西體重會增加1公斤
class person:
def __init__(self, name, weight):
self.name = name
self.weight = weight
def run(self):
self.weight -= 0.5
def eat(self):
self.weight += 1
def __str__(self):
return '名字:%s\n體重:%s\n' % (self.name, self.weight)
xm = person('小明', 75)
xm.eat()
xm.run()
print(xm)
#當使用print輸出物件的時候,只要自己定義了__str__(self)方法,那麼就會列印從在這個方法中return的資料
封裝案例2
需求:1、房子有戶型、總面積、家具名稱列表
房子沒有任何家具
2、家具有名字和占地面積,其中
席夢思(bed):4平公尺
衣櫃(chest): 2平公尺
餐桌(table): 1.5平公尺
3、將以上3個家具新增到房子中
4、列印房子中,要求輸出:戶型、總面積、剩餘面積、家具名稱列表
封裝案例3:
屬性可以是另外乙個類建立的物件:
class gun:#建立槍類
def __init__(self,gun_type):
self.gun_type = gun_type#初始化槍的型號
self.bullet = 0#初始化子彈的數量
def add_count(self, count):#新增子彈
self.bullet += count
def shoot(self):#射擊
if self.bullet > 0:#假如子彈數量大於0
self.bullet -= 1# 那就射擊,並且減少子彈數量
print('**.......%s' % self.bullet)
else:
print('沒有子彈啊,兄弟,別這麼坑我啊???')#否則沒有就顯示沒有子彈
class soldier:#建立乙個士兵的類
def __init__(self, name,gun=none):
self.name = name#初始化士兵的姓名
self.gun = gun#初始化槍
def fire(self):#**方法
if self.gun:#假如有槍
self.gun.shoot()#那就射擊
else:#不然就顯示沒有槍
print('沒有槍啊,兄弟,你讓我去送死嗎??')
ak47 = gun('ak47')#建立乙個槍的物件叫ak47
ak47.add_count(10)#新增10顆子彈
xsd = soldier('許三多')#例項化乙個許三多的士兵物件
xsd.gun = ak47#把槍交到許三多手中
xsd.fire()#**
python之物件導向
類 是乙個特殊的物件,class a 定義的類屬於 類物件 類的例項 obj a 屬於 例項物件 例項屬性 init 定義例項屬性 例項方法 self 物件名.方法名 類屬性 針對類物件定義的屬性,訪問類屬性方法 類名.類屬性 物件名.類屬性 類方法 針對類物件定義的方法,內部可直接訪問類屬性和其他...
python之物件導向
python中一切皆物件 class 定義的類屬於類物件 obj1 屬於例項物件 在程式執行時,類同樣會載入到記憶體,類物件在記憶體中只有乙份,使用乙個類可以建立出很多例項物件 除了封裝例項的屬性和方法外,類物件還可以擁有自己的屬性和方法 類屬性和例項屬性 類屬性就是給類物件中定義屬性,通常用來記錄...
Python之物件導向 物件導向基礎
一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...