python 類變數和例項變數
阿新 • • 發佈:2021-12-12
類變數是在類空間中命名的,就是不加self的變數。
因此,程式不能直接訪問這些變數,必須通過類名+類變數來訪問, 不管是在全域性範圍內還是函式內訪問這些類變數,都必須使用類名進行訪問
class Address: detail = "guangzhou" post_code = "510660" def info(self): #嘗試直接訪問類變數 #print(detail) #報錯 #通過類類訪問類變數 print(Address.detail) print(Address.post_code)#通過類來訪問Address 類的類變數 print(Address.detail) addr = Address() addr.info() #修改Address類的類變數 Address.detail = "fushan" Address.post_code = "460110" addr.info()
guangzhou guangzhou 510660 fushan 460110 請按任意鍵繼續. . .
實際上, python完全允許使用例項(物件)來訪問物件所屬類的類變數(當然還是推薦使用類訪問類變數)
class Record: #define two class variableitem = "滑鼠" date = "2016" def info(self): print("In info method : ", self.item) print("In info method: ",self.date) rc = Record() #也可以通過例項來訪問類變數 print(rc.item) print(rc.date) rc.info()
滑鼠 2016 In info method : 滑鼠 In info method: 2016 請按任意鍵繼續. . .
實際上,程式通過物件訪問類變數,其本質還是通過類名在訪問類變數
由於通過物件訪問類變數的本質還是類名在訪問,因此如果類變數發生了改變,當程式訪問這些類變數時也會讀到修改之後的值
class Record: #define two class variable item = "滑鼠" date = "2016" def info(self): print("In info method : ", self.item) print("In info method: ",self.date) rc = Record() #也可以通過例項來訪問類變數 print(rc.item) print(rc.date) #由於通過物件訪問類變數的本質還是類名在訪問,因此如果類變數發生了改變,當程式訪問這些類變數時也會讀到修改之後的值 Record.item = "鍵盤" Record.date = "2021" rc.info()
滑鼠 2016 In info method : 鍵盤 In info method: 2021 請按任意鍵繼續. . .
class Record: #define two class variable item = "滑鼠" date = "2016" def info(self,item,date): self.item = item self.date = date rc = Record() print(rc.item) print(rc.date) rc.info("display","2021")#修改的還是例項(self)的變數item,date, print(rc.item) print(rc.date) print("-"*30) print(Record.item)#item,date不會被改變 print(Record.date)
滑鼠 2016 display 2021 ------------------------------ 滑鼠 2016 請按任意鍵繼續. . .