python學習day22 初識面向物件
阿新 • • 發佈:2018-11-11
生活中的類和物件:
類:人類 手機
物件:某個人 某個手機
類 抽象的 有什麼屬性
物件 有具體的值,根據類規範的
面向過程 VS 面向物件
自定義類
class Person: # 類名 首字母大寫 country = 'China' # 創造了一個只要是這個類就一定有的屬性 # 類屬性 靜態屬性 def __init__(self,*args): # 初始化方法,self是物件,是一個必須傳的引數 #self就是一個可以儲存很多屬性的大字典 self.name = args[0] # 往字典裡新增屬性的方式發生了一些變化 self.hp = args[1] self.aggr = args[2] self.sex = args[3] def walk(self,n): # 定義一個方法,一般情況下必須傳self引數,且必須寫在第一個 # 後面還可以傳其他引數,是自由的 print('%s走走走,走了%s步'%(self.name,n))print(Person.country) # 類名 可以檢視類中的屬性,不需要例項化就可以檢視 alex = Person('狗剩兒',100,1,'不詳') # 例項化 alex就是物件 print(alex.__dict__) # 檢視物件的所有屬性 字典的形式 # print(alex.name) # 檢視屬性值 alex.walk(5) # 等價於Person.walk(alex,5) # 呼叫方法 類名.方法名(物件名) print(Person.__dict__) # 檢視Person類下的所有屬性 Person.__dict__['country'] = '印度' # 錯誤 不能通過dict方法修改 Person.country = '印度' # 這樣可以修改 alex.__dict__['name'] = '二哥' # 可以修改 print(Person.__dict__['country']) # 可以用字典的方式檢視 print(alex.__dict__['name']) # 相當於alex.name alex.age = 23 # 也可以這樣直接增加屬性
print(alex.country) # 物件可以呼叫靜態屬性
例項化:類名加括號就是例項化,會自動觸發__init__函式的執行,可以用它來為每個例項定製自己的特徵
物件 = 類(引數是init方法的)
過程:
- 類名() 首先 會創造出一個物件,建立了一個self變數
- 呼叫init方法,類名括號裡的引數會被這裡接收
- 執行init方法
- 返回self
物件能做的事:
- 檢視屬性
- 呼叫方法:不用傳self引數
- __dict__ 對於物件的增刪改查操作都可以通過字典的語法進行,物件的屬性
類名能做的事:
- 例項化,例項就是物件
- 呼叫方法: 只不過要自己傳遞self引數
- 呼叫類中的屬性,也就是呼叫靜態屬性
- __dict__ 對於類中的名字只能看,不能操作,注意:是類的靜態屬性
類的名稱空間
類物件指標
類中的靜態變數 可以被物件和類呼叫