class C:
count=0
a=C()
b=C()
c=C()
print(a.count)
print(b.count)
print(c.count)
c.count+=10
print(c.count)
print(a.count)
print(b.count)
print(C.count)
C.count+=100
print(a.count)
print(b.count)
print(c.count)
0
0
0
10
0
0
0
100
100
10
为什么后来a.count b.count的值都是100 而c.count的值是10
Atribut kelas adalah bersamaan dengan pembolehubah statik dalam Java dan tergolong dalam kelas.
Oleh kerana anda mentakrifkan atribut instance c di sini c.count+=10.
Jadi cetak(c.count) ialah 10
Oleh kerana c.count+=10 adalah bersamaan dengan menambahkan atribut instance secara dinamik pada objek instance c. Apabila mencetak c.count, atribut instance akan dicetak dan bukannya atribut class
Anda boleh menontonnya langkah demi langkah.
Mula-mula nyatakan tiga objek kelas C.
Cetak nilai kiraan a, b, c.
Ini melibatkan susunan carian atribut.
Pertama, semak sama ada contoh mempunyai nilai kiraan Jika ia tidak ditemui, ia akan mencari peringkat atas. Tahap atas contoh ialah kelas Jika didapati terdapat kiraan dalam atribut kelas, kiraan di sini akan menjadi output.
c.count += 10
Pada asalnya c.count merujuk kepada C.count, tetapi kini memberikan nilai baharu kepadanya adalah bersamaan dengan contoh c yang mempunyai atribut count.
Cetak nilai kiraan a, b, c, C. Pada ketika ini contoh c sudah mempunyai nilai kiraannya sendiri.
C.count += 100
Tukar nilai kiraan kelas C. c mempunyai nilai kiraan sendiri, dan a dan b masih merujuk kepada nilai kiraan C.
Mungkin begitulah rupanya.
Dalam satu ayat: Apabila contoh memberikan nilai kepada pembolehubah statik kelas, ia sebenarnya menambahkan atribut secara dinamik pada contoh tersebut susunan akses kepada contoh ialah Keutamaan ialah: contoh-》kelas
https://segmentfault.com/a/11...