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運算子可以建立多個不同的物件,這些物件將被分配...