--- réfléchie en python avec la fonction d'appel et un procédé de cordes

Nous allons rencontrer une telle scène dans des applications pratiques: après un code écrit, nous espérons entrer dans les instructions de code appeler directement une fonction ou une méthode, la pratique habituelle, nous allons utiliser une instruction if pour atteindre,

a=input('<<<')
if a == 要输入的指令
代码块
elif a==要输入的指令
代码块
....

Lorsqu'il est jugé moins de temps nécessaire, c'est pas de problème, mais nécessite plus de code de détermination du temps, le code deviendra très long.

Ensuite, nous pouvons utiliser la réflexion pour réaliser rapidement cette fonctionnalité.

Réflexion: type de données est une chaîne, à la grandeur de réglage, de la méthode, la fonction et analogues.

Les méthodes courantes de réflexion sont les suivants:

Procédé getattr () pour obtenir réfléchie

le procédé hasattr () détermine s'il est réfléchi, généralement utilisé avec getattr

1) se reflète dans la classe. Peut être obtenu par nom d'objet des propriétés de l'objet et les méthodes, vous pouvez également obtenir une propriété statique, les méthodes de classe, et les méthodes statiques avec le nom de la classe. Format code est le suivant:

getattr (ou nom de la classe d'objet «nom de la propriété »)

class A:
    def __init__(self,name):
        self.name=name
    def func(self):
        print('test')
a=A('apple')
print(a.name)
print(getattr(a,'name'))

L'exemple de code ci-dessus, les lignes 7 et 8 peut être mis en œuvre des exigences, mais par la méthode getattr (), nous pouvons réaliser avec, comme celui-ci dans les codes suivants INPUT interaction informatique humaine ():

class A:
    def __init__(self,name):
        self.name=name
    def func(self):
        print('test')
a=A('apple')
b=input('<<<')
print(getattr(a,b))

Nous pouvons, l'interaction homme-ordinateur en entrant une propriété à vue

Si la méthode de classe pour être invoquée, peut utiliser le code suivant, c après l'adresse mémoire générée par la réflexion, il doit appeler entre parenthèses arrière

c=getattr(a,'func') 
c()

--------------------------------------- ligne de séparation --------- ---------------------------

Reflète dans le module, le principe est le même format de code comme suit:

getattr (nom du module, "fonction")

Par exemple, nous pouvons tester le code suivant dans le module de temps:

import time
a=getattr(time,'localtime')
c=time.strftime('%Y-%m-%d',a())
print(c)

Le code ci-dessus est équivalente à

import time
c=time.strftime('%Y-%m-%d',time.localtime())
print(c)

La longueur du code la même apparence, mais l'ancien peut être réalisé dans l'interaction homme-machine, sans la nécessité d'une décision complexe

--------------------------------------- ligne de séparation --------- ---------------------------

Bien que le code ci-dessus pour répondre aux exigences, mais il y a un risque, une fois que la chaîne d'entrée ne peut être trouvé, il l'erreur, donc nous avons besoin d'utiliser une autre méthode à utiliser conjointement, est hasattr (), son rôle est de déterminer la présence d'un maître chaîne, peut être invoquée, sous le code si nous allons modifier la deuxième ligne ne change pas la façon

import time
a=getattr(time,'localtime1')
c=time.strftime('%Y-%m-%d',a())
print(c)

L'erreur suivante se produit
Insérer ici l'image Description
alors nous pouvons utiliser juge de hasattr peut également concevoir des erreurs rapidement, comme suit:

import time
if hasattr(time,'localtime1'):
    a=getattr(time,'localtime1')
    c=time.strftime('%Y-%m-%d',a())
    print(c)
else:
    print('代码错误')

Les résultats sont les suivants:
Insérer ici l'image Description
résumés comme suit:

1) lorsque nous avons besoin des données interactives ou interactives, telles que l'entrée à l'aide de la chaîne d'entrée lue à partir d'un fichier, ou de mettre en oeuvre un appel de méthode certaines fonctions peuvent être mises en œuvre en utilisant la méthode de réflexion.

2) Méthode de réflexion peut être obtenue, à en juger par l'instruction if peut également être atteint, mais il reste encore la méthode de réflexion est plus simple,

3) Parce que la réflexion interne est appelé et exécuté le code, donc la sécurité sera plus élevé!

Publié 13 articles originaux · a gagné les éloges 1 · vues 190

Je suppose que tu aimes

Origine blog.csdn.net/aa12551827/article/details/104916397
conseillé
Classement