本章內容:
類與實例
實例屬性與靜態屬性
實例方法與靜態方法
01:面向對象的語言VS面向對象的設計
面向對象的設計:是一種設計思路
面向對象的語言:提供對面向對象設計的語言支持
非面向對象的語言也能實現面向對象的設計思路
02:類與實例
類-一類具有相同特征的食物的統稱
現實不存在-抽象的概念-人類-鳥類
03:關鍵字 class 類名(通常首字母大寫)
class Tiger:
classname=‘tiger’
classname是一個屬性
04:實例
在這個類里面實際存在的個體
實例是類的具體實例化體現
05:創建實例
類名()
class Person()
#創建實例 類名()
P1= Person()
06:類--
1-特征--屬性--變量
2-行為--方法--函數
07:類屬性--這個類所有的實例都是一樣的--共有的
name= ‘人類’
靜態(類)屬性--可以實例.屬性,類.屬性
實例屬性-有些屬性每一個實例不一樣
初始化方法--創建實例會自動調用
def __init(self):
print('我執行了')
08:對象的方法
實例方法
def eat(self):
p1.eat()
09:具體總結概念:
類對象、類屬性、實例對象、實例屬性
類是一個特殊的對象即類對象
描述類的屬性成為類屬性
類屬性在內存中只有一份,在_init_外部定義
實例方法、類方法、靜態方法的區別
①實例方法是由對象調用,至少一個self參數。self代表對象的引用
②類方法有類調用,至少一個cls參數,並且需要裝飾器@classmethod裝飾
③靜態方法由類調用,不需要參數,需要裝飾器@staticmethod裝飾
創建原則:
①只要訪問了成員變量的方法都叫實例方法
②只要訪問類變量的方法叫類方法
③既不訪問成員變量,也不訪問類變量的方法叫靜態方法
靜態方法:@staticmethod
不能訪問實例屬性,,參數不能傳入self
與類相關但不是不依賴類與實例的方法
類方法:@classmethod
不能訪問實例屬性,參數必須傳入cls
必須傳入cls參數(即代表了此類對象--區別--self代表實例對象)
靜態方法和類方法都可以通過類或者實例來調用。其兩個的特點都不能夠調用實例屬性