Tengo un problema para entender cómo funcionan las variables clase/instancia en python. No entiendo por qué cuando intento este código la variable de lista parece ser una variable de clasevariables de instancia de clase python y variables de clase
class testClass():
list = []
def __init__(self):
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
de salida:
['thing']
['thing', 'thing']
y cuando hago esto parece ser una variable de instancia
class testClass():
def __init__(self):
self.list = []
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
de salida:
['thing']
['thing']
muchas gracias
jon
Si entiendo correctamente, usted está solicitando la razón de ser de una decisión de diseño particular con respecto a la sintaxis de Python. Para tales preguntas, la mejor respuesta es "porque encaja con el espíritu del lenguaje", o más descaradamente: "pregúntele a su creador". – Xion
ok así que las variables son variables de clase por defecto, de ahí surgió mi confusión, esa debería haber sido mi pregunta, las variables por defecto son las variables de clase –
@jonathantopf No, las variables NO son variables de clase por defecto. En Python no declaras varables. En realidad, en realidad no son variables (python es un _variable_language), solo nombres. Y no declaras ni asientes nombres, los vinculas a un objeto. Y cada objeto en el tiempo de ejecución tiene un diccionario de nombres a objetos. E incluso si dos objetos son de la misma clase, pueden tener diccionarios muy diferentes. – rodrigo