Voy a mostraros un ejemplo en el que usando una clase me da error y usando la misma clase con una leve variación, no.
Pero no logro del todo lo que quiero hacer.
Tengo la clase ContactoOld ( que es la errónea, o en la que lo hago mal ).
Estoy intentando averiguar los valores de las propiedades de los objetos de la clase añadidos a la variable de clase listacontactos.
Private $email As String
Private $nombre As String
Property email As String
Property nombre As String
Static Public listacontactos As New Variant[]
Public Sub _new(nom As String, ema As String)
With Me
.nombre = nom
.email = ema
End With
ContactoOld.listacontactos.Add(Me)
End
Private Function nombre_Read() As String
Return $nombre
End
Private Sub nombre_Write(Value As String)
$nombre = Value
End
Private Function email_Read() As String
Return $email
End
Private Sub email_Write(Value As String)
$email = Value
End
Private $nombre As String
Property email As String
Property nombre As String
Static Public listacontactos As New Variant[]
Public Sub _new(nom As String, ema As String)
With Me
.nombre = nom
.email = ema
End With
ContactoOld.listacontactos.Add(Me)
End
Private Function nombre_Read() As String
Return $nombre
End
Private Sub nombre_Write(Value As String)
$nombre = Value
End
Private Function email_Read() As String
Return $email
End
Private Sub email_Write(Value As String)
$email = Value
End
Procedimiento para probar.
Salida en la consola:
Citar:
Ahora la variación de la clase. Esta vez uso en la misma clase un método estático que llamo desde el constructor
Private $email As String
Private $nombre As String
Property email As String
Property nombre As String
Static Public listacontactos As New Variant[]
Public Sub _new(nom As String, ema As String)
With Me
.nombre = nom
.email = ema
End With
Me.anade()
End
Private Function nombre_Read() As String
Return $nombre
End
Private Sub nombre_Write(Value As String)
$nombre = Value
End
Private Function email_Read() As String
Return $email
End
Private Sub email_Write(Value As String)
$email = Value
End
Static Public Sub anade()
Contacto.listacontactos.Add(Me)
End
Private $nombre As String
Property email As String
Property nombre As String
Static Public listacontactos As New Variant[]
Public Sub _new(nom As String, ema As String)
With Me
.nombre = nom
.email = ema
End With
Me.anade()
End
Private Function nombre_Read() As String
Return $nombre
End
Private Sub nombre_Write(Value As String)
$nombre = Value
End
Private Function email_Read() As String
Return $email
End
Private Sub email_Write(Value As String)
$email = Value
End
Static Public Sub anade()
Contacto.listacontactos.Add(Me)
End
La llamada al procedimiento.
Public Sub UsandoClaseContacto()
Dim c1 As Contacto
Dim c2 As Contacto
Dim ctemp As Class
c1 = New Contacto("Alberto", "alberto@gmail.com")
c2 = New Contacto("Pedro", "pedro@yahoo.es")
Print Contacto.listacontactos.Count
Print Contacto.listacontactos[1]
For Each ctemp In Contacto.listacontactos
Print ctemp.Symbols
Next
End
Dim c1 As Contacto
Dim c2 As Contacto
Dim ctemp As Class
c1 = New Contacto("Alberto", "alberto@gmail.com")
c2 = New Contacto("Pedro", "pedro@yahoo.es")
Print Contacto.listacontactos.Count
Print Contacto.listacontactos[1]
For Each ctemp In Contacto.listacontactos
Print ctemp.Symbols
Next
End
Citar:
Son solo pruebas. Si ya me esta dando que contiene un array de string, con un bucle anidado se podría ver.
Ahora os muestro algo similar en Python. Prueba en la consola.
#!/usr/bin/env python3
class Contacto:
todos_contactos = []
def __init__(self, nombre, email):
self.nombre = nombre
self.email = email
Contacto.todos_contactos.append(self)
def main():
pass
if __name__=='__main__': main()
class Contacto:
todos_contactos = []
def __init__(self, nombre, email):
self.nombre = nombre
self.email = email
Contacto.todos_contactos.append(self)
def main():
pass
if __name__=='__main__': main()
Si yo en gambas usara algo como esto, con la clase instanciada en el objeto c1.
Os pongo al lado, el error que da:
Os adjunto el código en gambas. Mas parece que añadió una clase y no un objeto de clase.
Saludos
VariableDeClase.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | VariableDeClase.tar.gz | |
Tamaño: | 12.93 KB | |
Descargado: | 90 veces |
VariableDeClase.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | VariableDeClase.tar.gz | |
Tamaño: | 12.93 KB | |
Descargado: | 90 veces |
VariableDeClase.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | VariableDeClase.tar.gz | |
Tamaño: | 12.93 KB | |
Descargado: | 90 veces |