python 基礎學習 13 物件導向一

2021-10-07 03:28:45 字數 3925 閱讀 3030

3. 類的定義

4. 引數self

面向過程注重的是過程

• 1.媽媽穿衣服穿鞋出門

• 2.媽媽騎上電動車

• 3.媽媽到超市門口放好電動車

• 4.媽媽買西瓜

• 5.媽媽結賬

• 6.媽媽騎電動車回家

• 7.到家孩子吃西瓜

• 物件導向的程式語言,關注的是物件,而不注重過程,對於物件導向一切皆物件

物件導向注重的是結果

• 以上方式可以用 孩子媽媽給孩子買瓜來解決

• 物件導向的程式設計思想,將所有功能統一儲存到對應的物件中,要使用某個功能,直接找到對應的物件即可

• 這種編碼方式比較容易閱讀,並且易於維護,容易復用。但是編寫的過程中不太符合常規的思維,編寫相對麻煩

class 類名([父類]):

pass

#類 class

#類簡單理解就是一張圖紙 在程式中我們需要根據類來建立物件

#我們也稱物件是類的例項(instance)

#如果多個物件是通過乙個類來建立的, 我們稱這些物件是一類物件

#類以大寫字母開頭

a=int(1

)#建立了乙個int類的例項

print

(a,type

(a))

#1 b=

str(

"pytython"

)print

(b,type

(b))

#pytython

#自定義的類,類的名字要使用大寫字母開頭,使用大駝峰的命名法

#語法 class 類名(【父類】):

# **塊

class

myclass()

:pass

print

(myclass)

mc=myclass(

)# mc就是通過myclass建立的物件,mc是myclass的例項

#mc mc_2 mc_3 mc_4 都是myclass的例項,他們都是一類物件

mc_2=myclass(

)mc_3=myclass(

)mc_4=myclass(

)#我們可以通過ininstance()來檢查乙個物件是否是另乙個類的例項

# r=isinstance(mc,myclass) #true

r=isinstance

(mc_2,myclass)

#true

print

(r)

1

<

class

'int'

>

pytython <

class

'str'

>

<

class

'__main__.myclass'

>

true

• 類和物件都是對現實生活中事物的抽象

事物包含兩部分:

• 1. 資料(屬性)

• 2. 行為(方法)

• 呼叫方法 物件.方法名()

在類的**中我們可以定義變數和函式

class

myclass()

:pass

#類也是乙個物件,用來建立物件的物件

#類是type型別的物件,定義類實際上就是定義了乙個type型別的物件

# print(id(myclass),type(myclass))

#我們可以向物件中新增變數,物件中新增變數我們稱之為屬性

#語法:物件.屬性名=屬性值

mc=myclass(

)mc.name=

"蜘蛛俠"

print

(mc.name)

蜘蛛俠
• 方便呼叫和函式呼叫的區別:如果是函式呼叫,呼叫時有幾個形參,就會傳遞幾個實參。如果是方法呼叫,預設傳遞乙個引數,所以方法中至少得有乙個形參

• 在類**塊中,我們可以定義變數和函式

#嘗試定義乙個人類

class

person

:#在類的**塊中,我們可以定義變數和函式

#在類中我們定義的變數,將會成為所有例項的公共屬性

#所有例項都可以訪問這些變數

name=

"鋼鐵俠"

p1=person(

)p2=person(

)print

(p1.name)

鋼鐵俠
#嘗試定義乙個人類

class

person

:#在類的**塊中,我們可以定義變數和函式

#在類中我們定義的變數,將會成為所有例項的公共屬性

#所有例項都可以訪問這些變數

name=

"蜘蛛俠"

#在類中也可以定義函式,類中定義的函式我們稱之為方法

#這些方法可以通過該類的例項來訪問

defspeak

(self)

:# def speak(a):#或者形參用任何乙個代替

print

("hello"

)p1=person(

)p2=person(

)#呼叫方法是 物件.方法名

#方法呼叫和函式呼叫的區別

#如果函式呼叫 呼叫的時候有幾個形參 就會傳遞幾個實參

#但是如果是方法呼叫,預設傳遞乙個引數,方法中至少乙個形參

p1.speak(

)

hello
class

person

: name=

"蜘蛛俠"

p1=person(

)p2=person(

)#為什麼例項物件能夠訪問到類物件中的屬性和方法呢?

#類中定義的屬性和方法都是公共的,任何該類的例項都是可以訪問的

#屬性和方法的查詢流程

#1.當我們呼叫乙個物件的屬相時,解析器會在當前物件中尋找是否含有該屬性

#2.如果有,則直接返回當前物件的屬性值

#3.如果沒有,則去當前物件的類物件中去尋找,如果類物件中有則返回類物件中的屬性值

#4.如果類物件中沒有,則報錯

p1.name=

"鋼鐵俠"

print

(p1.name)

鋼鐵俠
class

person

: name=

"蜘蛛俠"

defspeak

(self)

:#方法每次被呼叫時,解析器都會自動傳遞乙個引數

#第乙個引數就是呼叫方法的本身

#如果是p1呼叫,第乙個引數就是p1物件

#如果是p2呼叫,第乙個引數就是p2物件

#一般習慣把這個引數命名為self

#在寫類物件方法時一定要加上這個引數

# print("你好我是%s"%name) #nameerror: name 'name' is not defined

print

("你好我是%s"

%self.name)

p1=person(

)p2=person(

)p1.name=

"鋼鐵俠"

p2.name=

"綠巨人"

p1.speak(

)#你好 我是鋼鐵俠

p2.speak(

)#你好 我是綠巨人

你好我是鋼鐵俠

你好我是綠巨人

python基礎 13 物件導向2

定義乙個類物件,並將其實例化。對不同的例項物件,我們可以手動定義不同的屬性值 class person def speak self print 你好,我是 s self.name p1 person p2 person p3 person p1.name 鋼鐵俠 p2.name 蜘蛛俠 p1.sp...

Python基礎 13 物件導向及異常處理

算術運算子過載 class number def init self,num self.num num 物件出現在 左邊時會自動觸發 def add self,other print add return self.num other 物件出現在 右邊是會自動觸發 def radd self,oth...

Python基礎學習 物件導向基礎

一 物件導向思想分析 1.思想 讓計算機圍繞著人的思維去執行,以符合人的思維習慣分析問題,解決問題 2.物件的定義 萬物皆物件,對物件的分析類似於分析物件的特徵 行為及屬性。例如 1 人摔壞了杯子,如果杯子作為物件,特徵有 材質 大小 形狀及生產商等,杯子的行為 運動 2 人在公園跑步,如果人作為物...