Article
· Sept 16 5m de lecture

Native Python dans IRIS, partie 2

Dans la section précédente, nous avons exploré le processus d'installation et initié l'écriture de l'IRIS en Python natif. Nous allons maintenant examiner la traversée globale et nous intéresser aux objets de classe IRIS. 

get : cette fonction est utilisée pour obtenir des valeurs à partir du nœud de traversée.

def traversal_firstlevel_subscript():
    """
    ^mygbl(235)="test66,62" and ^mygbl(912)="test118,78"
    """
    for  i in irispy.node('^mygbl'):
        print(i, gbl_node.get(i,''))

node et items : parcours à un seul niveau avec nœud et obtenir les mêmes valeurs que $Order(^mygbl(subscript), direction, data)

#single level traversal
def traversal_dollar_order_single_level():
    for  sub,val in irispy.node('^mygbl').items():
         print('subscript:',sub,' value:', val)
# multi level traversal
def traversal_dollar_order_multi_level():
    for  sub,val in irispy.node('^mygbl').items():
         print(f'sub type is: {type(sub)} {sub} and val type is {type(val)}')
         for sub1,val1 in irispy.node('^mygbl',sub).items():
            print('subscript:',sub1,' value:', val1)
        

nextsubscript : contrairement au code ci-dessus, vous pouvez utiliser nextsubscript pour obtenir facilement l'indice suivant

def traversal_dollar_order_use_nextsubscript():
      direction = 0
      next_sub = ''
      while next_sub != None:
            next_sub = irispy.nextSubscript(direction,'^mygbl', next_sub)
            print(f'next subscript = {next_sub}' )
            next_sub1=''
            if next_sub == None:return
            while next_sub1 != None:
                next_sub1 = irispy.nextSubscript(direction,'^mygbl',next_sub,next_sub1)
                print(f'1st subscript = {next_sub} next subscript {next_sub1}' )

Classes et objets

Vous pouvez appeler les méthodes de classe, les méthodes de la définition de classe en utilisant la fonction spécifique. Comme je l'ai mentionné plus tôt, les méthodes de conversion de type sont essentielles pour obtenir la réponse appropriée d'IRIS.

Avant cela, il est important de noter que, contrairement aux types de données IRIS, pour lesquels nous pouvons tout traiter comme des chaînes, les types de données Python tels que int, str, bool et list sont classés comme des objets. Chacun de ces types possède ses propres attributs et méthodes ; par exemple, le type de chaîne Python inclut des fonctions telles que .upper() et .lower(), qui ne sont pas applicables aux autres types de données. Par conséquent, IRIS est équipé de la capacité de convertir les valeurs de chaîne IRIS en objets de type de données pris en charge par Python grâce à l'utilisation de méthodes de conversion de type. Cette fonctionnalité s'applique également aux méthodes de classe, aux fonctions définies par l'utilisateur et aux procédures. Alternativement, il faut utiliser les fonctions de conversion de type de Python pour obtenir le type de données souhaité.

classMethodValue : appelez la méthode Classmethod depuis Python sans initialiser l'objet comme (ex : Do ##Class(Test.MYTest).FirstNameGetStored(1)) et obtenez la valeur par défaut de « string » en Python. Il existe différentes méthodes de conversion de type disponibles pour la valeur de retour attendue au lieu de la chaîne. Veuillez vous référer ci-dessous.

def get_clsmethod_value():
    print(irispy.classMethodValue('Test.MYTest','FirstNameGetStored',1)) #return string 
    date_horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog') #return +$H value
    print(irispy.classMethodVoid('Test.MYTest','SetTestGlobal','test')) # no return resposne

classMethodObject : Fonction importante pour instancier un nouvel objet IRIS ou ouvrir l'objet existant. Définissez les propriétés et appelez les méthodes d'instance, etc.

Nouvel objet IRIS : initiez l'objet de classe pour Test.MYTest et définissez les propriétés.

def cls_object_new():
    """
    initiate new object and store
    """
    iris_proxy_obj = irispy.classMethodObject('Test.MYTest','%New','ashok','kumar')

    birthdate_horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog','12/12/1990')
    horolog = irispy.classMethodInteger('Test.MYTest','GetHorolog')
    iris_proxy_obj.set('BirthDate',birthdate_horolog) #set birthdate property
    iris_proxy_obj.set('RegisteredDate',horolog) #set the RegisteredDate property
    status = iris_proxy_obj.invoke('%Save') #call instance method
    return status

Ouvrez l'objet IRIS : dans le code ci-dessous. Ouvrez l'objet de classe Test.MyTest et récupérez les valeurs Birthdate et RegisteredDate à partir de l'objet avec l'ID  = « 2 » et convertissez RegisteredDate en liste Python

def cls_object_open():
    iris_proxy_obj = irispy.classMethodObject('Test.MYTest','%OpenId',2)
    birth_date = iris_proxy_obj.get('BirthDate')
    full_name iris_proxy_obj.InvokeString("GetFullName")
    data = [birth_date, iris_proxy_obj.get('RegisteredDate')]
    return data

Définition de la classe IRIS que j'ai utilisée pour la démonstration du code Python de classe et d'objet

 
Spoiler

Méthodes de conversion de type :

il s'agit de quelques méthodes de conversion de type permettant de récupérer les valeurs de retour appropriées d'IRIS

classMethodValue() - pour appeler des méthodes de classe générales

classMethodInteger - Renvoie une valeur integer
classMethodVoid - Aucune valeur de retour
classMethodValue - string par défaut
classMethodFloat - valeur float


invoke() - est utilisé pour appeler les méthodes d'instance. Vous devez initialiser l'objet pour appeler ces fonctions d'appel

invokeString - string par défaut
invokeFloat - float par défaut
invokeInteger - integer par défaut

Nous aborderons les fonctions, les appels de procédure dans les routines et d'autres fonctionnalités dans le prochain article.

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