##面向過程
所謂過程就是我們解決問題的步驟,一步步的按照流程走,有先後之分。
它呢,整個設計就好比流水線,思維上比較機械化。
優缺點: 缺點
##物件導向
核心是物件。
正式的來說
通過資料和行為方式來描述互動物件的集合
在python 中一切皆為物件
物件導向的優缺點
缺點 在現實世界中,以我們為列
object1:
tom特徵:
school = zucc
name = tom
age =
20 *** = male
技能:eat
study
sleep
object2:
jack
特徵:school = zucc
name = jack
age =
20 *** = male
技能:eat
study
sleep
sing
類就是類別、種類
物件就是特徵和技能的統一體。
類則是這一系列物件的特徵和技能的結合。
對於現實世界,先有個體(即物件),才有類別;但對於程式,必須先有類,才有物件的。
oop(object oriented programming)
其是一種程式設計思想,oop把物件作為程式的乙個基本單元,乙個物件就包含了資料和運算元據的函式。
在python中,所有資料型別都可以視為物件,同時,我們也可以定義物件。
自定義的物件的資料型別就是物件導向中類的概念。
demo:
假如要處理我們的成績。為了表示我們的成績:
stu1 =
stu2 =
利用函式來實現
def
find_score
(stu)
:print
(stu[
"name"],
":",stu[
"score"
])
類的命名,大駝峰式
所謂大駝峰就是變數名稱的單詞的首字母大寫
建立乙個類
class
myfirstclass
;pass
類的作用是乙個模版。我們可以在建立實列的時候,把一些我們認為必須要繫結的屬性填寫進去。這是就通過特殊的__init__
方法。在建立例項的時候例項的時候,繫結相關的屬性,比如前面的name
class
classname
: school =
"zucc"
def__init__
(self, name, score)
: self.name = name
self.score = score
stu1 = classname(
"tom",99
)# 例項化
print
(stu1.name, stu1.score, stu1.school)
和普通函式相比在類中定義方法時,第乙個引數必須是self。除第乙個引數外,其他的和普通函式沒有什麼區別。
self代表的是例項,而非類。
__init__
方法
class
student
:def
__init__
(self, name, score, ***)
: self.name = name
self.score = score
self.*** = ***
deffind_score
(self)
:print
(self.name,
":", self.score, self.***)
stu1 = student(
"tom",99
,"male"
)stu1.find_score(
)
我們通過__init__
讓stu1例項本身就擁有了相關資料,如果要訪問這些資料,我們可以直接在student類的內部定義相關的函式來訪問資料,以此「封裝」資料。
這些封裝資料的函式和student類本身是關聯起來的,他們被稱之為方法。
類的兩個作用:
例項化
類屬性的補充
類屬性的檢視
2.類名.__dict__
類名.__name__#返回類的名字
類名.__doc__#類的文件字串
類名.__base__#類的第乙個父類
類名.__bases__#類的所有父類構成的元組
類名.__module__#類定義所在的模組
類名.__class__#例項所對應的類
類名.__dict__#類的字典
總結:
class
classname
:def
__init__
(self,para1,para2,..
.)self.物件屬性 =para1
self.物件屬性 =para2
def 方法名1
(self)
:pass
def 方法名2
(self)
:pass
obj = classname(para1,para2)
#物件的例項化,代表的是具體的東西
#classname():呼叫__init__
#括號內傳參,無需傳入self,引數一一對應
#結果是返回物件obj
obj.物件屬性1
#檢視物件屬性
obj.方法名1
#呼叫類的方法
假如現在定義兩個類,person,dog
class
person
:def
__init__
(self, name, aggressibity, life_value)
: self.name = name
self.aggressibity = aggressibity
self.life_value = life_value
defattack
(self, dog)
: dog.life_value -= self.aggressibity
class
dog:
def__init__
(self, name, breed, aggressibity, life_value)
: self.name = name
self.breed = breed
self.aggressibity = aggressibity
self.life_value = life_value
defbite
(self, person)
: person.life_value -= self.aggressibity
per = person(
"jack",10
,1000
)dog = dog(
"jeorry"
,"husky",8
,1000
)print
(dog.life_value)
per.attack(dog)
print
(dog.life_value)
1000
990
建立乙個類就會建立乙個類的命名空間,用來儲存我們定義的所有變數名。這些名字就是屬性。
類的屬性有兩種:
動態屬性
靜態屬性是共享給所有物件的
動態屬性是繫結給所有物件的
物件導向 初識物件導向
面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...
物件導向程式設計01 面向過程 物件導向
前面12講我已經寫完了從零開始學j ase 慶祝完結撒花!那麼從今天開始正式步入物件導向程式設計。建議開啟本章之前先回顧 j ase010方法詳解和 j a變數與方法的呼叫 同類操作中與跨類操作中的對比 物件導向程式設計 oop object oriented programming 物件導向程式設...
物件導向過程與物件導向
物件導向過程與物件導向 1 程式的發展經歷了兩個階段 面向過程 物件導向。2 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...