測試環境為 CentOS 8 x86_64 (虛擬機)
Class 的 屬性 (Attribute)是用來存放 Object 的資料.屬性 (Attribute) 有分 實例屬性(instance attribute) 與 類別屬性(class attribute).
- 實例屬性 (instance attribute) 又稱 資料屬性 (data attribute)
instance attribute 就是跟著 instance 建立時生成,每一個 instance 的 instance attribute 都是獨立的,修改時不影響其他 instance 的 instance attribute. - 類別屬性 (class attribute)
class attribute 並不隨著 instance 建立時生成,所有 instance 共用相同的 class attribute ,當有 instance 修改 class attribute 時其他 instance 存取 class attribute 時都會受影響.
範例如下.
[root@localhost ~]# vi computer.py # Class class computer: # class attribute cpu='Intel' def __init__(self): # instance attribute self.disk = '256G' # Method def list(self): return self.disk #object customer1=computer() customer2=computer() customer2.disk='512G' print ('Computer1:' , customer1.cpu , ' , ' ,customer1.disk) print ('Computer2:' , customer2.cpu , ' , ' ,customer2.disk) computer.cpu='AMD' print ('Computer1:' , customer1.cpu , ' , ' ,customer1.disk) print ('Computer2:' , customer2.cpu , ' , ' ,customer2.disk)
執行結果.
[root@localhost ~]# python3 computer.py Computer1: Intel , 256G Computer2: Intel , 512G Computer1: AMD , 256G Computer2: AMD , 512G
- 實例屬性 (instance attribute) 又稱 資料屬性 (data attribute)
範例中我們先建立了 customer2 物件並透過物件的 disk 屬性變更了屬性值.customer2.disk='512G' print ('Computer1:' , customer1.cpu , ' , ' ,customer1.disk) print ('Computer2:' , customer2.cpu , ' , ' ,customer2.disk)
執行結果.只有 customer2 的 disk 屬性質變更了.
Computer1: Intel , 256G Computer2: Intel , 512G
- 類別屬性 (class attribute)
範例中我直接透過 類別名稱變更了屬性值.computer.cpu='AMD' print ('Computer1:' , customer1.cpu , ' , ' ,customer1.disk) print ('Computer2:' , customer2.cpu , ' , ' ,customer2.disk)
執行結果.customer1 與 customer2 的 cpu 屬性質皆變更了.
Computer1: AMD , 256G Computer2: AMD , 512G
沒有解決問題,試試搜尋本站其他內容