1. 程式人生 > >python學習day22 初識面向物件

python學習day22 初識面向物件

生活中的類和物件:

類:人類 手機

物件:某個人 某個手機

類 抽象的 有什麼屬性

物件 有具體的值,根據類規範的

面向過程 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__ 對於類中的名字只能看,不能操作,注意:是類的靜態屬性

類的名稱空間

 類物件指標

類中的靜態變數 可以被物件和類呼叫