7 29物件導向

2021-09-25 16:34:17 字數 4097 閱讀 2138

##面向過程

所謂過程就是我們解決問題的步驟,一步步的按照流程走,有先後之分。

它呢,整個設計就好比流水線,思維上比較機械化。

優缺點: 缺點

##物件導向

核心是物件。

正式的來說

通過資料行為方式來描述互動物件的集合

在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 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...