python - otra - ¿Por qué mi variable de instancia no está en__dict__?
llamar una clase dentro de otra clase python (2)
class A:
def _ _init_ _(self):
self.name = ''A''
a = A()
Crea un atributo en la instancia de objeto a de tipo A y, por lo tanto, se puede encontrar en: a.__dict__
class B:
name = ''B''
b = B()
Crea un atributo en la clase B y el atributo se puede encontrar en B.__dict__ alternativamente, si tiene una instancia b de tipo B, puede ver los atributos de nivel de clase en b.__class__.__dict__
Si creo una clase A siguiente manera:
class A:
def __init__(self):
self.name = ''A''
La inspección del miembro __dict__ ve como {''name'': ''A''}
Sin embargo, si creo una clase B :
class B:
name = ''B''
__dict__ está vacío.
¿Cuál es la diferencia entre los dos y por qué no aparece el name en el __dict__ B ?
B.name es un atributo de clase, no un atributo de instancia. Se muestra en B.__dict__ , pero no en b = B(); b.__dict__ b = B(); b.__dict__ .
La distinción se oscurece un tanto porque cuando accedes a un atributo en una instancia, el dict de clase es un repliegue. Entonces, en el ejemplo anterior, b.name le dará el valor de B.name .