類變數與例項變數

2021-09-26 19:30:39 字數 1446 閱讀 9441

初始**如下

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 變數 僅在生成第乙個物件時分配記憶體,所有例項物件共享同乙個類變數,每個例項物件對類變數的改變都會影響到其它的例項物件。類變數可通過類名直接訪問,無需先生成乙個例項物件,也可以通過例項物件訪問類變數。區別在於 類變數是所...