• python是一門物件導向的程式語言
• 所謂物件導向的語言,簡單理解就是語言中的所有操作都是通過物件來進行的
首先我來看面向過程語言
• 面向過程指將我們的程式分解為乙個乙個步驟,通過對每個步驟的抽象來完成程式
• 這種編寫方式往往只適用於乙個功能,如果要實現別的功能,往往復用性比較低
• 這種程式設計方式符號人類的思維,編寫起來比較容易
• 1.老王穿衣服穿鞋出門
• 2.老王騎上電動車
• 3.老王到超市門口放好電動車
• 4.老王買西瓜
• 5.老王結賬
• 6.老王騎電動車回家
• 7.到家小明吃西瓜
物件導向的程式語言,關注的是物件,而不注重過程,對於物件導向一切皆物件
• 以上方式可以用 孩子媽媽給孩子買瓜來解決
• 物件導向的程式設計思想,將所有功能統一儲存到對應的物件中,要使用某個功能,直接找到對應的物件即可
• 這種編碼方式比較容易閱讀,並且易於維護,容易復用。但是編寫的過程中不太符合常規的思維,編寫相對麻煩
• 我們目前學習的都是python的內建物件,但是內建物件並不都能滿足我們的需求,所以我們在開發中經常要自定義一些物件
• 類簡單理解它就是相當於乙個圖紙,在程式彙總我們需要根據類來建立物件。
• 類就是物件的圖紙
• 我們也稱物件是類的例項(instance)
• 如果多個物件是通過乙個類建立的,我們稱這些物件是一類物件
# 類(class)
# 類簡單理解就是一張圖紙 在程式中我們需要根據類來建立物件
# 我們也稱物件是類的例項(instance)
# 如果多個物件是通過乙個類建立的,我們稱這些物件是一類物件
# a = 1 int() str() bool() list()....
a =int(1
)# 建立了乙個int類的例項
b =str
('python'
)# 建立了乙個str類的例項
print
(a,type
(a))
print
(b,type
(b))
# 輸出
1<
class
'int'
>
python <
class
'str'
>
# 自定義的類,類的名字要使用大寫字母開頭,使用大駝峰命名法
# 語法 class 類名([父類]):
# **塊
class
myclass()
:pass
print
(myclass)
# mc = myclass(
)print
(mc,
type
(myclass)
)# <__main__.myclass object at 0x00000000021f1208>
# mc就是通過myclass建立的物件。mc是myclass的例項
mc_2 = myclass(
)mc_3 = myclass(
)mc_4 = myclass(
)r =
isinstance
(mc_2,myclass)
# 檢驗mc_2是否是myclass的例項
# mc mc_2 mc_3 mc_4 都是myclass的例項 他們都是一類物件
# 類也是乙個物件 用來建立物件的物件
# 類是type型別的物件 定義類實際上就是定義了乙個type型別的物件
print(id
(myclass)
,type
(myclass)
)
# 我們可以像物件中新增變數,物件中新增變數我們稱之為屬性
# 語法:物件.屬性名 = 屬性值
mc.name =
'蜘蛛俠'
mc_2.name =
'鋼鐵俠'
print
(mc.name)
# 蜘蛛俠
print
(mc_2.name)
# 鋼鐵俠
• 類和物件都是對現實生活中事物的抽象
• 事物包含兩部分
• 1. 資料(屬性)
• 2. 行為(方法)
• 呼叫方法 物件.方法名()
• 方法呼叫和函式呼叫的區別:如果是函式呼叫,呼叫時有幾個形參,就會傳遞幾個實參。如果是方法呼叫,預設傳遞乙個引數,所以方法中至少得有乙個形參
• 在類**塊中,我們可以定義變數和函式
• 變數會成為該類例項的公共屬性,所有的該例項都可以通過 物件.屬性名的形式訪問
• 函式會成為該類例項的公共方法,所有該類例項都可以通過 物件.方法名的形式訪問
# 類的定義
# 類和物件都是對現實生活中事物的抽象
# 實際上所有的事物都有兩部分構成
# 1.資料(屬性)
# 2.行為(方法)
# 嘗試定義乙個人類
class
person
:# 在類的**塊中,我們可以定義變數和函式
# 在類中我們定義的變數,將會成為所有例項的公共屬性
# 所有例項都可以訪問這些變數
a =10 b =
20 name =
'蜘蛛俠'
# 在類中也可以定義函式 類中定義的函式我們稱之為方法
# 這些方法可以通過該類的例項來訪問
defspeak
(self)
:# 方法呼叫,預設傳遞乙個引數。方法中至少定義乙個形參
print
('hello!'
)p1 = person(
)p2 = person(
)# 呼叫方法 物件.方法名
print
(p1.a,p2.b)
# 10 20
print
(p1.name)
# 蜘蛛俠
p1.speak(
)#typeerror: speak() takes 0 positional arguments but 1 was given
# 方法呼叫和函式呼叫的區別
# 如果函式呼叫 呼叫的時候有幾個形參,就會傳遞幾個實參
# 但是如果是方法呼叫,預設傳遞乙個引數。方法中至少定義乙個形參
• 類中定義的屬性和方法都是公共的,任何該類例項都可以訪問
• 屬性和方法的查詢流程
• 當我們呼叫乙個物件的屬性時,解析器會現在當前的物件中尋找是否還有該屬性,
如果有,則直接返回當前的物件的屬性值。
如果沒有,則去當前物件的類物件中去尋找,如果有則返回類物件的屬性值。如果沒有就報錯
• 類物件和例項物件中都可以儲存屬性(方法)
• 如果這個屬性(方法)是所以的例項共享的,則應該將其儲存到類物件中
• 如果這個屬性(方法)是摸個例項獨有的。則應該儲存到例項物件中
• 一般情況下,屬性儲存到例項物件中 而方法需要儲存到類物件中
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(
)# 你好 我是綠巨人
# print(p2)
• self在定義時需要定義,但是在呼叫時會自動傳入。
• self的名字並不是規定死的,但是最好還是按照約定是用self
• self總是指呼叫時的類的例項
python 物件導向(一)
def 函式名 x 定義乙個類的方式為 class 類名 xx 定義乙個貓類 class cat 屬性 方法 defeat self print s吃 s 5,5 defplay self print 玩 xiaohuamao cat eat 列印結果 吃 獲取物件屬性 定義乙個貓類 class c...
python物件導向(一)
物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...
python物件導向一
什麼是物件?物件就是記憶體中儲存指定資料的一塊區域,實際上物件就是乙個容器專門用來儲存資料 id 標識 type 型別 value 值 所謂物件導向簡單理解就是語言中所有的操作都是通過物件來進行的 面向過程 物件導向 把大象放進冰箱分幾步?開啟冰箱 對應開啟功能 裝大象 對應儲存功能 關門 對應關閉...