python 3学習の反射

1154 ワード

1、          
                ( / / ),          
#hasattr(  ,'   '):       ,      “   ”      ;
    True  False
#getattr(  ,'   '):     ,      “   ”      
#s3.py
p1():
    ()
p2():
    ()
p3():
    ()
    
#s2.py
import s3

inp = input("Please input function:")

if inp == "p1":
    s3.p1()
elif inp == "p2":
    s3.p2()
elif inp == "p3":
    s3.p3()
##  inp 100 ,        ,             

if hasattr(s3,inp):    #  inp   s3      ,   True,    False
                       #     getattr ,  “   ”   
    f = getattr(s3,inp)   #  s3    inp   ,   f
    f()                   #   inp    
2            

同様に、100個のモジュールの各モジュールに100のメンバーがある場合
obj = __import__("   ")    #    ,      
func = getattr(obj,"   1")  #    

3モジュールが同じディレクトリにない場合
obj = __import__("  ."+"   ",fromlist=True)    #    ,  fromlist  ,    "  ",  “.”

注意:反射はwebフレームワークで多く使われており、urlを解析することで対応機能を実行します.