Python学習イントロスペクション/リフレクション

イントロスペクション/リフレクション
イントロスペクションはリフレクションとも呼ばれ、このプロパティは、オブジェクトが実行時に独自の情報を取得する方法を示します。オブジェクトを渡すと、そのオブジェクトの
機能がわかります。これは強力な機能です。Pythonが何らかの形式のイントロスペクションをサポートしていない場合、
組み込みのdir 関数type関数は適切に機能しません        __dict     __、__ name __、__ doc__ などの特別な属性もあります

クラスmyClass(オブジェクト):
def __init __(self):
self.foo = 100
    
    def bar(self):
        print( "print bar")


myInst = myClass()
print(hasattr(myInst、 'foo'))#インスタンスクラスオブジェクトにfoo属性があるかどうか、ブール値を返す
print(getattr(myInst、 'foo'))#インスタンスクラスオブジェクトからfoo属性の値を
取得するprint(hasattr(myInst 、 'bar'))#インスタンスクラスオブジェクトにbar関数があるかどうかにかかわらず、ブール値を返します
print(getattr(myInst、 'errorbar'、 'oops!'))#最初のパラメータインスタンス、2番目のパラメータにはerrorbar属性
#そのような属性がない場合、デフォルトではoopsが出力され、デフォルトのパラメーターはスローされません
Print(getattr(myInst、 'bar'、 'oops!'))#2番目のパラメーターが存在し、オブジェクトのメモリアドレスを返します
setattr(myInst、 'b'、 'test123')#新しいインスタンス属性、最初のパラメーターインスタンス、2番目のパラメーター属性、3番目のパラメーター属性値を設定します
setattr(myInst、 'age'、lambda self:self.foo + 200)
delattr(myInst、 'b')#インスタンスの属性を削除します
print((dir(myClass)))
print(dir(myInst))
print(dir())
print(dir(myInst.foo))
print( myInst .__ dict__)
print(myInst.age(myInst))

例2:
クラスFtpClient:
    'ftpクライアントですが、特定の関数が実装されています'
    def __init __(self、addr):
        print( 'connecting to the server [%s ] '%addr)
        self.addr = addr
        
#from module import FtpClient
f1 = FtpClient(' 192.168.1.1 ')
if hasattr(f1、' get '):
    func_get = getattr(f1、' get ')
    func_get()
else:
    印刷( '---->このメソッドは存在しません')
    印刷(「他のロジックを処理する」)

おすすめ

転載: www.cnblogs.com/jinpingzhao/p/12735540.html