Rumah > Soal Jawab > teks badan
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的作用,第二点是为赋值后撒类对象变化了而类却没变
高洛峰2017-04-18 10:25:36
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
,
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__()