Python 物件導向程式設計(一)

2021-10-06 23:01:17 字數 3408 閱讀 8350

python是一門物件導向的程式語言

所謂的物件導向的語言,簡單理解就是語言中的所有操作都是通過物件來進行的。

先看一下面向過程的程式設計的語言

面向過程指將我們的程式的邏輯分解為乙個乙個的步驟,通過對每個步驟的抽象,來完成程式。例如:孩子上學(分7步)

1.媽媽起床

2.媽媽洗漱

3.媽媽做早飯

4.媽媽叫孩子起床

5.孩子要洗漱

6.孩子吃飯

7.孩子揹著書包上學校

面向過程的程式設計思想將乙個功能分解為乙個乙個小的步驟,我們通過完成乙個乙個的小的步驟來完成乙個程式。

優點:這種程式設計方式,符合我們人類的思維,編寫起來相對比較簡單。

缺陷:這種方式編寫**的往往只適用於乙個功能,如果要在實現別的功能,即使功能相差極小,也往往要重新編寫**,所以它可復用性比較低,並且難於維護

物件導向的程式設計語言

- 物件導向的程式語言,關注的是物件,而不關注過程

- 對於物件導向的語言來說,一切都是物件

- 例如上面的例子可以直接寫成:

孩子他媽起床叫孩子上學
物件導向的程式設計思想,將所有的功能統一儲存到對應的物件中

比如,媽媽功能儲存到媽媽的物件中,孩子的功能儲存到孩子物件中

要使用某個功能,直接找到對應的物件即可

缺陷:但是這種方式編寫,不太符合常規的思維,編寫起來稍微麻煩一點

定義乙個簡單的類

使用class關鍵字來定義類,語法和函式很像!

class 類名([父類]):

**塊

使用myclass建立乙個物件

使用類來建立物件,就像呼叫乙個函式一樣

class myclass():

pass

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

mc_2 = myclass()

mc_3 = myclass()

mc_4 = myclass()

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

isinstance()用來檢查乙個物件是否是乙個類的例項

result = isinstance(mc_2,myclass)
現在我們通過myclass這個類建立的物件都是乙個空物件

也就是物件中實際上什麼都沒有,就相當於是乙個空的盒子

可以向物件中新增變數,物件中的變數稱為屬性

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

mc_2.name = '豬八戒'

print(mc_2.name)

例子:定義乙個表示人的類

class person :

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

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

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

name = 'swk' # 公共屬性,所有例項都可以訪問

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

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

def say_hello(self) :

# 方法每次被呼叫時,解析器都會自動傳遞第乙個實參

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

# 如果是p1調的,則第乙個引數就是p1物件

# 如果是p2調的,則第乙個引數就是p2物件

# 一般我們都會將這個引數命名為self

# say_hello()這個方法,可以顯示如下格式的資料:

# 你好!我是 ***

# 在方法中不能直接訪問類中的屬性

print('你好!我是 %s' %self.name)

建立person的例項

p1 = person()

p1.name = '豬八戒'

p1.say_hello() # '你好!我是 豬八戒'

del p1.name # 刪除p2的name屬性

物件的初始化

class person :

# 在類中可以定義一些特殊方法(魔術方法)

# 特殊方法都是以__開頭,__結尾的方法

# 特殊方法不需要我們自己呼叫,不要嘗試去呼叫特殊方法

# 特殊方法將會在特殊的時刻自動呼叫

# 學習特殊方法:

# 1.特殊方法什麼時候呼叫

# 2.特殊方法有什麼作用

# 建立物件的流程

# p1 = person()的執行流程

# 1.建立乙個變數

# 2.在記憶體中建立乙個新物件

# 3.__init__(self)方法執行

# 4.將物件的id賦值給變數

# init會在物件建立以後離開執行

# init可以用來向新建立的物件中初始化屬性

# 呼叫類建立物件時,類後邊的所有引數都會依次傳遞到init()中

def __init__(self,name):

# print(self)

# 通過self向新建的物件中初始化屬性

self.name = name

def say_hello(self):

# 目前來講,對於person類來說name是必須的,並且每乙個物件中的name屬性基本上都是不同

# 而我們現在是將name屬性在定義為物件以後,手動新增到物件中,這種方式很容易出現錯誤

# 我們希望,在建立物件時,必須設定name屬性,如果不設定物件將無法建立

# 並且屬性的建立應該是自動完成的,而不是在建立物件以後手動完成

# p1 = person()

# # 手動向物件新增name屬性

# p1.name = '孫悟空'

# p2 = person()

# p2.name = '豬八戒'

# p3 = person()

# p3.name = '沙和尚'

# p3.say_hello()

p1 = person('孫悟空')

p2 = person('豬八戒')

p3 = person('沙和尚')

p4 = person('唐僧')

# p1.__init__() 不要這麼做

# print(p1.name)

# print(p2.name)

# print(p3.name)

# print(p4.name)

p4.say_hello()

Python物件導向程式設計 一

類和例項 定義乙個student類 object父類 class student object pass 複製 注意 特殊方法 init 前後有兩個下劃線!def init self,name,score self.name name self.score score 複製 def get grad...

Python物件導向程式設計 一

類和例項 定義乙個student類 object父類 class student object pass 複製 注意 特殊方法 init 前後有兩個下劃線!def init self,name,score self.name name self.score score 複製 def get grad...

python的物件導向程式設計(一)

一 類和例項 類是抽象的模板,而通過類可以例項出來物件。1 建立類 class person object pass class 類名 繼承的類的類名 通常情況下 當乙個類沒有要繼承的類的情況下,就繼承 object類,object是所有的類都會繼承的類 2 建立類的物件並且為類的物件繫結屬性 p1...