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的作用,第二点是为赋值后撒类对象变化了而类却没变

Tout danspython
est un objet,class
est aussi une sorte d'objet,Comme le montre l'image ci-dessus, lorsque vous instanciez
CC
, il y aura deux objets dans la mémoire (les mots verts sont les propriétés et les méthodes à l'intérieur de l'objet), l'un estCC
, l'autre estdd
,Lorsque vous exécutez
Comment l'interprètedd.setXY(4,5)
,self
est défini surdd
, carsetXY
n'existe pas dansdd
, donc l'interprète recherche la classe parent, dansCC
RecherchersetXY
et exécutez-le,self
, c'est-à-dire qu'il y a deux autres membres à l'intérieur dedd
,x
ety
,sait-il que la classe parent de
dd
estCC
?La réponse est,
dd.__class__
Lorsque vous supprimez
CC
, vous supprimez en fait simplement la variableCC
, mais ne supprimez pas la mémoire occupée par la classeCC
, cardd
existe toujours, etdd
la classe existe toujours.__class__
est référencé via l'attributCC
(python
la gestion de la mémoire est basée sur le comptage de références)Donc c'est juste que la classe ne peut pas être trouvée via la variable
CC
, mais vous pouvez la trouver viadd.__class__
,Donc, tu peux écrire comme ça,
ee = dd.__class__()