Tengo este ejemplo:
La clase Cosa:
Y Main contiene:
Public Sub Main()
Dim objeto As Cosa
'No se crea ningun objeto
'Se muestra el valor del atributo total de la clase Cosa
Print Subst("El valor del atributo total de la clase Cosa es &1 ", Cosa.total)
objeto = New Cosa
objeto.MostrarTotal()
'Se intenta acceder al atributo total de la clase Cosa a traves de un objeto
Print objeto.total
End
Dim objeto As Cosa
'No se crea ningun objeto
'Se muestra el valor del atributo total de la clase Cosa
Print Subst("El valor del atributo total de la clase Cosa es &1 ", Cosa.total)
objeto = New Cosa
objeto.MostrarTotal()
'Se intenta acceder al atributo total de la clase Cosa a traves de un objeto
Print objeto.total
End
Bien, me gustaría saber, ¿ por qué se produce error ?.
He estado viendo un poco el tratamiento de los objetos en la ayuda de gambas.
La salida fue esta:
Citar:
Y al intentar mostrar el valor del atributo de clase mediante un objeto instanciado de la clase Cosa, me da este error:
Citar:
¿ No debería haber mostrado el valor del atributo/símbolo ?.
En Python no me he encontrado ese problema. Este es un código similar para Python.
#!/usr/bin/python3
class Cosa():
total = 0
@staticmethod
def MostrarTotal():
print ('El total de objetos Cosa creados es de: {0}'.format(Cosa.total))
def __init__(self):
Cosa.total += 1
def main():
# No se crea ningún objeto
# Se muestra el valor del atributo total de la clase Cosa
print ('El valor del atributo total de la clase Cosa es: {0}'.format(Cosa.total))
objeto = Cosa()
objeto.MostrarTotal()
# Se intenta accede al atributo total de la clase Cosa a través de un objeto
print (objeto.total)
if __name__=='__main__': main()
class Cosa():
total = 0
@staticmethod
def MostrarTotal():
print ('El total de objetos Cosa creados es de: {0}'.format(Cosa.total))
def __init__(self):
Cosa.total += 1
def main():
# No se crea ningún objeto
# Se muestra el valor del atributo total de la clase Cosa
print ('El valor del atributo total de la clase Cosa es: {0}'.format(Cosa.total))
objeto = Cosa()
objeto.MostrarTotal()
# Se intenta accede al atributo total de la clase Cosa a través de un objeto
print (objeto.total)
if __name__=='__main__': main()
Saludos