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
defmain():
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!
Comments
Muito bom, estou utilizando o Python com o Iris, ele é um grande facilitador, suas bibliotecas já trazem muitas soluções prontas.
Sim! Recentemente comecei a estudar mais o SQLAlchemy, que tem uma integração aqui SQLAlchemy-iris, facilita demais a ponte entre Python e COS