¿Por qué puedo acceder a una variable inexistente?

Posiblemente sea una pregunta tonta, pero estoy más acostumbrado a Java y similares y, por lo tanto, no entiendo por qué puedo hacer esto:

class A:
    def __init__( self ):
        pass

a = A()
a.description = "whyyy"

print a.description

Y haz que se imprima whyyy en lugar de darme un error.

preguntado el 01 de julio de 12 a las 07:07

2 Respuestas

Debido a que los objetos de Python son dinámicos, no es necesario que sigan un esquema rígido.

La creación de una instancia de una clase le brinda un objeto que ya tiene ciertas cosas definidas, pero puede agregar dinámicamente otras cosas a esa instancia; no está restringido a la definición de clase original.

Respondido 01 Jul 12, 08:07

Las variables surgen cuando se les asigna un valor y se destruyen automáticamente cuando quedan fuera del alcance.

Para objetos, puede agregar nuevos campos dinámicamente en tiempo de ejecución. Tenga en cuenta que esto no cambiará la descripción de la clase. Solo la instancia actual.

class A:
    def __init__( self ):
        pass

a = A()
a.description = "whyyy"

print a.description

b = A()

print b.description # Should return an error

Respondido 01 Jul 12, 07:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.