python是一門物件導向的程式語言,所謂物件導向的語言,簡單理解就是語言中的所有操作都是通過物件來進行的。
物件就是記憶體中專門用來儲存的一塊區域,物件的結構包含id(標識)、type(型別),value(值)
面向過程指將我們的程式分解為乙個乙個步驟,通過對每個步驟的抽象來完成程式。
這種編寫方式往往只適用於乙個功能,如果要實現別的功能,往往復用性比較低
這種程式設計方式符號人類的思維,編寫起來比較容易
物件導向的程式語言,關注的是物件,而不注重過程。1
.媽媽穿衣服穿鞋出門
2.媽媽騎上電動車
3.媽媽到超市門口放好電動車
4.媽媽買西瓜
5.媽媽結賬
6.媽媽騎電動車回家
7.到家孩子吃西瓜
物件導向的程式設計思想,將所有功能統一儲存到對應的物件中,要使用某個功能,直接找到對應的物件即可。
這種編碼方式比較容易閱讀,並且易於維護,容易復用。但是編寫的過程中不太符合常規的思維,編寫相對麻煩。
類簡單理解它就是相當於乙個圖紙,在程式中我們需要根據類來建立物件,類就是物件的圖紙,我們也稱,物件是類的例項(instance)。
如果多個物件是通過乙個類建立的,我們稱這些物件是一類物件。
類也是乙個type型別的物件,類就是用來建立物件的物件。# 語法
# class 類名([父類]):
# pass
class
myclass()
:pass
(myclass)
# 輸出定義在主檔案裡的乙個類
#使用myclass建立乙個物件
mc = myclass(
)mc1 = myclass(
(mc,
type
(mc)
)# 輸出表明mc是由myclass建立的乙個物件(例項)
# isinstance()用來檢查乙個物件是否是乙個類的例項
r =isinstance
(mc,myclass)
(r)# true
可以向物件中新增變數,物件中的變數稱之為屬性
語法:物件.屬性名 = 屬性值
• 類和物件都是對現實生活中事物的抽象class
myclass
:pass
print(id
(myclass)
,type
(myclass)
)# 現在通過myclass建立的物件都是空物件
mc = myclass(
)mc.name =
'葫蘆娃'
# mc變數對應的物件值為 name = 葫蘆娃
mc2 = myclass(
)#print(mc2.name) # 報錯
mc2.name =
'鋼鐵俠'
(mc2.name)
• 事物包含兩部分
• 1. 資料(屬性)
• 2. 行為(方法)
• 方法呼叫和函式呼叫的區別:# 定義乙個人類
class
person()
:# **塊,可以定義變數和函式
# 定義的變數,成為所有例項物件的公共屬性
# 所有例項都可以訪問這些變數
# 呼叫變數 物件.屬性名
name =
'葫蘆娃'
# 類中定義的函式稱為方法,成為所有例項物件的公共方法
# 所有例項都可以訪問這些方法
# 呼叫方法 物件.方法名()
defspeak
(a):
('同學們好'
)p1 = person(
)p2 = person(
(p1.name)
(p2.name)
p1.speak(
)p2.speak(
)
如果是函式呼叫,呼叫時有幾個形參,就會傳遞幾個實參;
如果是方法呼叫,預設傳遞乙個引數,所以方法中至少得有乙個形參。
• 在類**塊中,我們可以定義變數和函式
• 變數會成為該類例項的公共屬性,所有的該例項都可以通過 物件.屬性名的形式訪問
• 函式會成為該類例項的公共方法,所有該類例項都可以通過 物件.方法名的形式訪問
類中定義的屬性和方法都是公共的,任何該類例項都可以訪問。# 定義乙個人類
class
person()
:# **塊,可以定義變數和函式
# 定義的變數,成為所有例項物件的公共屬性
# 所有例項都可以訪問這些變數
# 呼叫變數 物件.屬性名
name =
'葫蘆娃'
# 類中定義的函式稱為方法,成為所有例項物件的公共方法
# 所有例項都可以訪問這些方法
# 呼叫方法 物件.方法名()
defspeak
(a):
('同學們好'
)p1 = person(
)p2 = person(
(p2.name)
p1.name =
'鋼鐵俠'
(p1.name)
# 鋼鐵俠
呼叫變數 物件.屬性名
呼叫方法 物件.方法名()
• 屬性和方法的查詢流程:
當我們呼叫乙個物件的屬性時,解析器會先在當前的物件中尋找是否還有該屬性,如果有,則直接返回當前的物件的屬性值。如果沒有,則去當前物件的類物件中去尋找,如果有則返回類物件的屬性值。如果沒有就報錯。
類物件和例項物件都可以儲存屬性和方法:
如果該屬性和方法是所有例項共享的,儲存在類物件中;
如果該屬性和方法是某些例項獨享的,儲存在例項物件中;
一般情況下屬性儲存在例項物件中,而方法需要儲存到類物件中。
self在定義時需要定義,但是在呼叫時會自動傳入。
self的名字並不是規定死的,但是最好還是按照約定是用self
self總是指呼叫時的類的例項
# 定義乙個人類
class
person()
: name =
'葫蘆娃'
# 方法被呼叫時,解析器會自動傳遞乙個實參給形參,第乙個形參被稱為self
defspeak
(self)
('你好,我是%s'
%self.name)
(self)
p1 = person(
)p2 = person(
)p1.name =
'鋼鐵俠'
p2.name =
'綠巨人'
p1.speak(
)# 你好,我是鋼鐵俠
p2.speak(
)# 你好,我是綠巨人
Python學習之路11 函式
形式如下 def 函式名 引數 函式體傳遞實參 位置實參 基於形參的順序指定實參值 關鍵字實參 無需考慮函式呼叫中的實參順序,按形參名指定對應的實參值 1 傳遞預設值 要指定預設值的形參需要放在後面 def 函式名 引數1,引數2,引數3 預設值 函式體2 傳遞任意數量的實參 使用 引數名 來對應任...
python 入門之路(3)
1.1 表示式 由數字 算符 數字分組符號 自由變數和約束變數等以求得數值的有意義排列方法所得的組合 其特點包括表示式一般僅僅用於計算一些結果,不會對程式產生實質性的影響 如果在互動模式中輸入乙個表示式,直譯器會自動將表示式的結果輸出 如在pycharm中輸入 2 3print 2 3 1.2 語句...
Python入門之路(14)
屬性 類屬性,直接在類中定義的屬性是類屬性 類屬性可以通過類或類的例項訪問到。但是類屬性只能通過類物件來修改,無法通過例項物件修改 例項屬性 通過例項物件新增的屬性屬於例項屬性 例項屬性只能通過例項物件來訪問和修改,類物件無法訪問修改 方法 在類中定義,以self為第乙個引數的方法都是例項方法 例項...