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
.