Pythons例項變數和類變數一點思考

2021-09-23 05:45:50 字數 1179 閱讀 7891

class

student

: school=

"華南理工"

def__init__

(self,name=

"無",age=

"無")

: self.name=name

self.age=age

print

(self.name,

":",

id(self.name)

,self.age,

":",

id(self.age)

,self.school,

":",

id(self.school)

)def

printclassattr

(self)

:print

("類變數school:"

,student.school,,id

(student.school)

)

stu1=student(

"斌哥"

,"19"

)stu1.school=

"中山大學"

print

(stu1.__dict__,stu1.school)

#由輸出結果可知,stu1例項的屬性,方法字典中多了乙個school屬性,所以例項修改類變數不是直接改了類變數記憶體位址

#而是在自己的例項作用域中新建了乙個與類變數同名的例項變數,並且類變數和例項變數同名情況下,例項優先引用例項變數

stu2=student(

"彬哥"

,"21"

)print

(stu2.__dict__,stu2.school)

student.school=

"中山大學"

#類變數一定要類名修改,才能作用於所有例項

print()

stu1.printclassattr(

)stu2.printclassattr(

)

輸出:

斌哥 : 48323992 19 : 42781080 華南理工 : 48496232

中山大學

彬哥 : 48557464 21 : 42781192 華南理工 : 48496232

華南理工

例項變數和類變數

例項變數 instance variable 我們在類內部,方法體外部,用 或不用 private protected public修飾定義 而且沒有static修飾符 的變數稱為 例項變數,即這些變數存放在這個類的每個物件的記憶體空間中,他們之間互不 影響 即對其中乙個物件的例項變數進行修改不會影...

例項變數和類變數

例項變數宣告在乙個類中,但在方法 構造方法和語句塊之外 當乙個物件被例項化之後,每個例項變數的值就跟著確定 例項變數在物件建立的時候建立,在物件被銷毀的時候銷毀 例項變數的值應該至少被乙個方法 構造方法或者語句塊引用,使得外部能夠通過這些方式獲取例項變數資訊 例項變數對於類中的方法 構造方法或者語句...

例項變數和類變數 類方法和例項方法

類體中包括成員變數和區域性變數,而成員變數又可以細分為例項變數和類變數,在宣告成員變數的時候,用static給予修飾的稱作類變數,否則稱作例項變數。類變數也稱為static變數,靜態變數 那麼,類變數和例項變數有什麼區別呢?我們知道,乙個類通過使用new運算子可以建立多個不同的物件,這些物件將被分配...