Article
· Fév 16 2m de lecture

Types en Python et en ObjectScript

Pourquoi j'ai décidé d'écrire ceci

Dans mon dernier article, j'ai parlé du renvoi de valeurs avec Python. Mais les renvoyer est simple, ce qui peut rendre les choses plus difficiles, c'est ce dont je vais parler aujourd'hui : où la valeur est traitée.

Objet Python dans IRIS

 

En suivant l'exemple du dernier article, nous avons la méthode : objet dans IRIS

Class python.returnTest [ Abstract ]
{

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

}

Nous aurons ensuite en retour un objet Python, qu'IRIS interprète comme la classe %SYS.Python. Donc si j'appelle la méthode avec deux valeurs, comme ceci :

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

nous aurons comme returnValue quelque chose comme "1@%SYS.Python". Ensuite, pour accéder aux chaînes, je peux procéder comme suit :

 

Write returnValue."__getitem__"(0)

et dans le terminal nous aurons "Hello".

Les attributs que vous pouvez utiliser dépendent du type, mais vous les trouverez en exécutant "help". C'est simple:

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

et vous aurez ensuite le type de valeur de retour et les méthodes que vous pouvez utiliser : pour la comparer, la modifier ou simplement la visualiser, ou tout ce que vous pourriez souhaiter.

 

Si vous exécutez "help" sans paramètres, c'est-à-dire "Do buildins.help()", vous aurez tout ce que vous pouvez faire avec tous les types.

 

Objet IRIS en Python

 

Toujours avec l'exemple du dernier article, nous aurons :

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())

Ici, nous avons fait la connexion comme dans les articles précédents jusqu'à ce que nous ayons l'irispy, que nous utilisons pour accéder à tout le package dont dispose IRIS. J'ai donc trouvé la méthode classMethodObject() dans Native SDK for Python Quick Reference, qui est adéquat pour appeler le "returnSomething" et renvoyer un objet.

D'autres exemples sont classMethodVoid(), classMethodBoolean(), classMethodIRISList(), etc.

Le "test" est donc un objet IRIS, puisqu'il a été créé avec une méthode IRIS. Pour accéder aux méthodes depuis un objet IRIS en Python, je peux utiliser .invoke("oject name", "arguments") ou .invokeVoid(). Pour accéder aux propriétés ou les configurer, je peux utiliser .set() et .get().

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer