Artigo
· Mar. 17, 2023 2min de leitura

Tipos em Python e em ObjectScript

Por que decidi escrever isso

No meu último artigo, falei sobre devolver valores com Python. Mas a devolução é muito simples, o que pode complicá-la é o que vou falar hoje: onde é tratado o valor.
 

Objeto Python em IRIS

Seguindo o exemplo do último artigo, temos o método:

Class python.returnTest [ Abstract ]
{

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

}

 

Assim, temos devolvido um objeto de Python, que para IRIS é a classe %SYS.Python. Então, por ejemplo, se chamo o método com dois valores, tenho:
 

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

 

teremos como returnValue algo como "1@%SYS.Python". Então, para acessar as strings, posso fazer:

Write returnValue."__getitem__"(0)

 

e no terminal teremos "Hello".

 

Os atributos que pode usar dependem do tipo, mas pode encontrá-los executando um "help". É muito simples:

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

e aí terá o tipo de returnValue e os métodos que pode usar - para compará-lo, mudá-lo, somente vê-lo e o que mais quiser.

Se executar o "help" sem parâmetros, ou seja, "Do builtins.help()", terá tudo o que pode fazer com todos os tipos.

 

Objeto IRIS em Python

Outra vez com o exemplo do último artigo, temos:

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

Aqui, fizemos a conexão como nos artigos passados até termos o irispy, que usamos para acessar tudo que o módulo Iris tem disponível. Então, encontrei o método classMethodObject() em  Native SDK for Python Quick Reference, que é o adequado para chamar o "returnSomething" e ter um objeto devolvido.

 

Outros exemplos são classMethodVoid(), classMethodBoolean(), classMethodIRISList(), etc.
 

O "test" então é um objeto IRIS, já que foi criado com um método IRIS. Para acessar aos métodos de um objeto IRIS em Python, posso usar .invoke("nome do método", "argumentos"), ou .invokeVoid(). Para acessar as propriedades ou configurá-las, posso usar .set() e .get().

 

Obrigada por ler o artigo e sinta-se à vontade para entrar em contato!

Discussão (2)2
Entre ou crie uma conta para continuar