Artículo
· 9 mar, 2023 Lectura de 2 min

Tipos en Python y en ObjectScript

Por qué he decidido escribir esto

En mi ultimo artículo he hablado de la devolución de valores con Python. Pero la devolución es muy simple, lo que la puede hacer difícil es de lo que voy a hablar hoy: dónde es tratado el valor.
 

Objeto Python en IRIS

Siguiendo el ejemplo del último artículo, tenemos el método:

Class python.returnTest [ Abstract ]
{

ClassMethod returnSomething(pValue... As %String) As %Integer [ Language = python ]
{
	return pValue
}

}

Así, tenemos devuelto un objeto de Python, que para IRIS es la clase %SYS.Python. Así que, por ejemplo, si llamo al método con dos valores, es decir:
 

Set returnValue = ##class(python.returnTest).returnSomething("Hello", "World")

tendremos como returnValue algo como "1@%SYS.Python". Asi que para acceder a las strings, puedo hacer:

Write returnValue."__getitem__"(0)

y en el terminal tendremos "Hello".

 

Los atributos que puedes usar dependen del tipo, pero los vas a encontrar si ejecutas un "help". Es muy sencillo:

Set builtins = ##class(%SYS.Python).Builtins()
Do builtins.help(returnValue)

y ahí tendrás el tipo de returnValue y los métodos que puedes usar - para compararlo, cambiarlo, solamente mirarlo... o lo que quieras.

Si ejecutas el "help" sin parámetros, o sea "Do builtins.help()", tendrás todo que puedes hacer con todos los tipos.

 

Objeto IRIS en Python

Otra vez con el ejemplo del último artículo, tenemos:

import iris

def main():
    connection_string = "localhost:1972/samples"
    username = "_system"
    password="sys"
    connection = iris.connect(connection_string, username, password)

    irispy = iris.createIRIS(connection)
    
    test = irispy.classMethodObject("python.returnTest", "returnSomething", "Hello", " World!")
    
    print(test.invoke("__getitem__", 0))
    
    return test


print(main())

Aquí, hicimos la conexión como en los artículos pasados, hasta tenemos el irispy, que usamos para acceder a todo lo que el paquete Iris tiene disponible. Así que encontré el método classMethodObject() en Native SDK for Python Quick Reference, que es el adecuado para llamar el "returnSomething" y tener un Objeto devuelto. 

Otros ejemplos son classMethodVoid(), classMethodBoolean(), classMethodIRISList(), etc.

El "test" entonces es un objeto IRIS, ya que fue creado con un método IRIS. Para acceder a los métodos de un objeto IRIS en Python, puedo usar .invoke("nombre del método", "argumentos"), o .invokeVoid(). Para acceder a propiedades o configurarlas están .set() y .get().

Comentarios (0)1
Inicie sesión o regístrese para continuar