python - class 类的问题
PHPz
PHPz 2017-04-18 10:23:43
0
4
588
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

PHPz
PHPz

学习是最好的投资!

membalas semua(4)
左手右手慢动作

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

In [1]: class C:
   ...:     c= 10
   ...:

In [2]: c = C()

In [3]: c.c
Out[3]: 10

In [4]: c.c = 1000

In [5]: c.__dict__
Out[5]: {'c': 1000}

In [6]: c.__class__.__dict__
Out[6]: {'__doc__': None, '__module__': '__main__', 'c': 10}

In [7]: c.__class__.c
Out[7]: 10

In [8]:
巴扎黑

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...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!