Python小白學習之如何添加類屬性和類方法,修改類私有屬性


如何添加類屬性和類方法,修改類私有屬性

2018-10-26  11:42:24

 

 

 

 類屬性、定義類方法、類實例化、屬性初始化、self參數、類的私有變量的個人學習筆記

直接上實例:

 1 class player:
 2     def __init__(self,name,hp,occupation):
 3         self.name = name
 4         self.hp = hp
 5         self.occupation = occupation
 6     def print_role(self):
 7         print("%s %s %s"%(self.name,self.hp,self.occupation))
 8 #類實例化
 9 player01 = player('will','2000','warror')
10 player02 = player('jine','2500','mage')
11 #調用類方法
12 player01.print_role()
13 player02.print_role()
  • 第一步:簡單介紹一下類,創建一個類名用class + 類名 + 英文冒號。
  • 第二步:def __init__(self,屬性名1,屬性名2,屬性名3.....)是一個構造函數,表示類屬性的默認值和屬性的初始化,self是類的第一個參數,這個參數是類實例本身,后面若干個類的屬性名。
  • 第三步:定義類方法,注意類方法的第一個參數必須是self,也就是類實例本身。這個類方法是打印玩家的屬性信息。
  • 第四步:類實例化,把帶參數的類復制給一個變量,然后我們就可以通過這個變量進行操作,調用查看實例的類方法和類屬性。

打印結果如下:

那么如何添加類屬性並修改屬性呢:

 1 #添加類屬性
 2 print('****************************************************')
 3 class player:
 4     def __init__(self,name,hp,occupation,power):
 5         self.name = name
 6         self.hp = hp
 7         self.occupation = occupation
 8         self.power = power #給類添加屬性
 9     def print_role(self):
10         print("%s %s %s %s"%(self.name,self.hp,self.occupation,self.power))
11     def update(self,new_hp):
12         self.hp = new_hp
13 player3 = player('tom','3000','warror','150')
14 player3.print_role()   #打印人物初始默認值。
15 player3.update('1000') #調用方法,修改類屬性(hp血量值)
16 player3.print_role()   #調用打印方法,對比初始,檢查hp是否改變
17 #綜上所述,我們通過添加類方法,並在類方法中通過傳遞新的參數修改已有的屬性。當然我們也可以在實例化后修改,不過如果屬性若為私有屬性,則實例化后修改屬性行不通
18 player3.name = 'Jines' #在實例中,類外面修改類屬性也可以,但這種方法僅限於非私有屬性
19 player3.print_role()
20 print('=======================================================')

第一、從上面源碼中,我們可以看出,只需在構造函數中,也就是__init__()函數中,添加形參,並且創建一個新的self.power變量(名字隨意,這里只是舉例,),並將形參賦值給self.power,然后我們在實例化中,添加對應的實參就可以完成添加一個新的類屬性。

第二、如何修改參數,上面代碼中提供了兩種方法,一種是在類中,通過定義新方法修改,另一種是在實例化后,修改實例的屬性。這兩種方法都可以實現修改類屬性。

執行結果:

從上面可以看出,兩種方法都可以修改類的屬性。

但是,如果類的屬性是私有屬性,那通過修改實例化后的屬性就無法實現修改屬性了。但另一種方法通過定義一個新的方法,在新的的方法中修改私有變量是可以實現的。

源碼如下:

 1 #私有屬性,只要在屬性前面加雙下划線__
 2 class player:
 3     def __init__(self,name,hp,occupation,power):
 4         self.__name = name
 5         self.hp = hp
 6         self.occupation = occupation
 7         self.power = power #給類添加屬性
 8     def print_role(self):
 9         print("%s %s %s %s"%(self.__name,self.hp,self.occupation,self.power))
10     def update(self,new_name):
11         self.__name = new_name
12 player4 = player('tom','3000','warror','150')
13 player4.print_role()
14 player4.name = 'Pole'
15 player4.print_role() #通過類型外修改類私有屬性,很明顯不可以,只有通過類方法修改類屬性
16 print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
17 player4.update('Machel') #通過輸出結果可見,成功修改了私有變量,注意一點,私有變量修改,類中所有要修私有屬性的self.attribute應對應改成self.__attribute
18 player4.print_role()

執行結果:

從上面可以看出我們通過實例修改私有變量,輸出結果仍是初始化的狀態,並沒有改變,但通過調用類方法修改類屬性的值卻是實現了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM