初始**如下
class
dog:
num_legs =
4#類變數
def__init__
(self,name)
: self.name = name #例項變數
一、訪問變數>>
> jack = dog(
'jack'
)>>
> rose = dog(
'rose'
)>>
> jack.name, rose.name
('jack'
,'rose'
)>>
> jack.num_legs, rose.num_legs(4
,4)>>
> dog.num_legs
4>>
> dog.name
traceback (most recent call last)
: file ""
, line 1,in
attributeerror:
type
object
'dog' has no attribute 'name'
類變數
可通過類本身或者類的例項物件訪問;
例項變數
只可通過類的示例物件訪問,不能通過類本身訪問。
二、修改類變數
>>
> dog.num_legs =
6>>
> jack.num_legs, rose.num_legs(6
,6)#### 修改了類本身的類變數,類的例項物件的類變數隨之改變
>>
> dog.num_legs =
4>>
> jack.num_legs, rose.num_legs(4
,4)>>
> jack.num_legs =
6>>
> jack.num_legs, rose.num_legs, dog.num_legs(6
,4,4
)#### 修改了某個例項的類變數,不影響類本身的類變數
#### jack.num_legs建立了乙個與類變數同名的例項變數,從而隱藏了原來的類變數。!!注意!!
>>
> rose.__class__.num_legs =
8>>
> jack.num_legs, rose.num_legs, dog.num_legs(6
,8,8
)>>
> dog.num_legs =
7>>
> jack.num_legs, rose.num_legs, dog.num_legs(6
,7,7
)#### 通過 '類例項物件.__class__'修改類變數,與通過'類本身'修改類變數,效果一致
類變數與例項變數
定義乙個英雄類,包含玩家數量,生命值,攻擊力和玩家姓名,同時包含乙個方法攻擊方法,呼叫攻擊方法時顯示如圖資訊,建構函式中需要初始化資料,當玩家加入遊戲後需要顯示玩家姓名和數量 class hero count 0 類變數 def init self 例項變數 self.hp 0 self.attac...
例項變數與類變數
例項變數與類變數 類變數也叫靜態變數,也就是在變數前加了static 的變數 例項變數也叫物件變數,即沒加static 的變數 區別在於 類變數和例項變數的區別在於 類變數是所有物件共有,其中乙個物件將它值改變,其他物件得到的就是改變後的結果 而例項變數則屬物件私有,某乙個物件將其值改變,不影響其他...
類變數,例項變數
1 例項變數和類變數 每個物件的例項變數都分配記憶體 類變數 即 static 變數 僅在生成第乙個物件時分配記憶體,所有例項物件共享同乙個類變數,每個例項物件對類變數的改變都會影響到其它的例項物件。類變數可通過類名直接訪問,無需先生成乙個例項物件,也可以通過例項物件訪問類變數。區別在於 類變數是所...