una otra llamar instanciar instancia funciona ejemplos ejemplo dentro definir como clases clase atributos python

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 .