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