python之物件導向程式設計(一)
物件導向程式設計的定義
物件導向程式設計的核心是物件,即某一可有屬性、動作的複雜事物。優先考慮物件和需要達到的結果,不重點關注流程。
物件導向程式設計的優點是程式的可維護高和擴充套件性強,採用物件導向程式設計可以大幅提高多團隊開發效率,在需求變化快的場景物件導向程式設計應對需求變化更容易。
物件導向程式設計的缺點是可控性差,無法精準預測問題的處理流程和結果。
物件導向程式設計常用名詞
類:具有某些類似特徵的一類事物(如動物、植物等),類是模板,是抽象概念。
物件(例項):具體的某一事物(如那隻流浪貓、這隻寵物狗),物件是具體的事物,是具體事物。
例項化:根據類建立具體物件的過程。
類的定義
class 類名(父類):
'''說明文件'''
類體
其中(父類)可預設,預設父類是object,可以把object理解為類的祖先。
class語句下一行三引號開頭和三引號結束中的內容為類的說明文件。
說明文件下一行即為類的正式內容,即類體。
類體中主要內容有2種,一是屬性、二是函式。
例如:
class Animal:
kind = 'all animals'
def eat(self):
print('The animal is eating!')
print(Animal.kind)
Animal.eat(Animal)
out:
all animals
The animal is eating!
以上案例中kind是屬性,eat是函式。
注意eat比較特殊,如果用類名.eat呼叫時它是函式,用物件.eat呼叫時它是方法。
例項化
類名加括號就是例項化,會自動觸發__init__函式的執行,它會根據引數為每個例項定製自己的特徵。
white_cat = Animal()
print(white_cat.kind)
white_cat.eat()
out:
all animals
The animal is eating!
注意:例項化時會找該類的__init__函式,若該類無此函式,那麼會找它父類的__init__函式,父類若沒有會繼續向上找祖父類__init__函式,直至找到object類中的空__init__函式。
函式和方法的區別
學python時經常會有人搞不清楚函式和方法的區別。在此通過案例來搞清楚它們的區別。
from types import FunctionType, MethodType
class Animal:
kind = 'all animals'
def eat(self):
print('The animal is eating!')
white_cat = Animal()
print(isinstance(Animal.eat, FunctionType)) # 判斷Animal.eat是不是函式
print(isinstance(white_cat.eat, FunctionType)) # 判斷white_cat.eat是不是函式
print(isinstance(Animal.eat, MethodType)) # 判斷Animal.eat是不是方法
print(isinstance(white_cat.eat, MethodType)) # 判斷white_cat.eat是不是方法
out:
True
False
False
True
通過以上案例得出結論:
類.變數名()呼叫時,該變數名是函式。
變數名()呼叫時,該變數名是函式。
例項.變數名()呼叫時,該變數名是方法。
相關文章
- Python學習之物件導向程式設計Python物件程式設計
- Python物件導向程式設計Python物件程式設計
- Python 物件導向程式設計Python物件程式設計
- Python OOP 物件導向程式設計PythonOOP物件程式設計
- python技能--物件導向程式設計Python物件程式設計
- Python物件導向程式設計(1)Python物件程式設計
- Python - 物件導向程式設計 - super()Python物件程式設計
- Python - 物件導向程式設計 - @propertyPython物件程式設計
- JS物件導向程式設計(一):物件JS物件程式設計
- Python學習之物件導向高階程式設計Python物件程式設計
- python學習之物件導向程式設計的一些思考Python物件程式設計
- 史上最全 Python 物件導向程式設計Python物件程式設計
- python基礎(物件導向程式設計)Python物件程式設計
- python物件導向程式設計基礎Python物件程式設計
- 14 Python物件導向程式設計:反射Python物件程式設計反射
- 圖解python | 物件導向程式設計圖解Python物件程式設計
- JavaScript設計模式之物件導向程式設計JavaScript設計模式物件程式設計
- Javascript 物件導向程式設計(一)JavaScript物件程式設計
- Python 物件導向程式設計之封裝的藝術Python物件程式設計封裝
- Python - 物件導向程式設計 - 三大特性之繼承Python物件程式設計繼承
- 物件導向程式設計物件程式設計
- 詳解Python物件導向程式設計之類、例項、方法Python物件程式設計
- python物件導向之抽象工廠設計模式Python物件抽象設計模式
- 程式設計思想 物件導向程式設計物件
- js物件導向程式設計JS物件程式設計
- 十三、物件導向程式設計物件程式設計
- 十六、物件導向程式設計物件程式設計
- 13 Python物件導向程式設計:裝飾器Python物件程式設計
- Python學習之路——類-物件導向程式設計Python物件程式設計
- Python - 物件導向程式設計 - 什麼是 Python 類、類物件、例項物件Python物件程式設計
- 12 Python物件導向程式設計:運算子過載Python物件程式設計
- Python基礎入門(6)- 物件導向程式設計Python物件程式設計
- Python - 物件導向程式設計 - __new()__ 和單例模式Python物件程式設計單例模式
- 物件導向程式設計C++物件程式設計C++
- javascript:物件導向的程式設計JavaScript物件程式設計
- JS物件導向的程式設計JS物件程式設計
- Javascript 物件導向程式設計(二)JavaScript物件程式設計
- Javascript 物件導向程式設計(三)JavaScript物件程式設計