cari

Rumah  >  Soal Jawab  >  teks badan

python - class 类的问题

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

PHPzPHPz2871 hari yang lalu634

membalas semua(4)saya akan balas

  • ringa_lee

    ringa_lee2017-04-18 10:25:43

    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

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:25:43

    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]:
    

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:25:43

    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.

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 10:25:43

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

    balas
    0
  • Batalbalas