python - 类 类对象 赋值后的分别变化,及删除后为什么还有值
伊谢尔伦
伊谢尔伦 2017-04-18 10:23:36
0
1
539
class CC:
    def setXY(self,x,y):
        self.x=x
        self.y=y
    def printXY(self):
        print(self.x,self.y)

dd=CC()
print(dd.__dict__)                         # {}  #对象CC()的所有成员
print(CC.__dict__)                       #{'__weakref__': <attribute '__weakref__' of 'CC' objects>, '__doc__': None, '__dict__': <attribute '__dict__' of 'CC' objects>, 'printXY': <function CC.printXY at 0x0000000000A50268>, '__module__': '__main__', 'setXY': <function CC.setXY at 0   #输出类CC的所有成员
dd.setXY(4,5)
print(dd.__dict__)                       #{'y': 5, 'x': 4}#赋值后类对象有值了

print(CC.__dict__)                       #{'printXY': <function CC.printXY at 0x0000000001160268>, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'CC' objects>, '__weakref__': <attribute '__weakref__' of 'CC' objects>, '__doc__': None, 'setXY': <function CC.setXY at 0x00000000011601E0>}#赋值后没变

del CC
#ee=CC()   NameError: name 'CC' is not defined
dd.printXY()                                 # 4 5

第一点是那个self的作用,第二点是为赋值后撒类对象变化了而类却没变

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(1)
小葫芦

Segala sesuatu dalam

python ialah objek, class juga sejenis objek,

Seperti yang ditunjukkan dalam gambar di atas, apabila anda membuat instantiate CC, akan ada dua objek dalam ingatan (perkataan hijau adalah sifat dan kaedah di dalam objek), satu ialah CC, satu lagi adalah dd,

Apabila anda melaksanakan dd.setXY(4,5), self ditetapkan kepada dd, kerana setXY tidak wujud dalam dd, jadi jurubahasa mencari kelas induk, dalam CC Cari setXY dan laksanakannya, self, iaitu, terdapat dua lagi ahli di dalam dd, x dan y,

Bagaimanakah jurubahasa

mengetahui bahawa kelas induk dd ialah CC?
Jawapannya, dd.__class__

Apabila anda memadamkan CC, anda sebenarnya hanya memadamkan pembolehubah CC, tetapi jangan memadamkan memori yang diduduki oleh kelas CC, kerana dd masih wujud dan dd masih wujud __class__ dirujuk melalui atribut CC (python pengurusan memori adalah berdasarkan pengiraan rujukan)

Jadi cuma kelas itu tidak boleh ditemui melalui pembolehubah CC, tetapi anda boleh menemuinya melalui dd.__class__,

Jadi, anda boleh menulis seperti ini, ee = dd.__class__()

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!