Python getattr()関数使用方法コード例
getatter()メソッドの名前の文字列の呼び出し方法により、この方法の最も主要な役割は反射機構を実現することであり、つまり文字列を通じて方法の例を取得することができ、このようにして、1つのクラスの呼び出し可能な方法を配置ファイルに置いて、必要な時に動的にロードすることができる。
1:クラスから属性と関数を取得できます。
test.pyファイルを新規作成します。コードは以下の通りです。
新しいtest 1.pyのコードは以下の通りです。
1:クラスから属性と関数を取得できます。
test.pyファイルを新規作成します。コードは以下の通りです。
# encoding:utf-8
import sys
class GetText():
def __init__(self):
pass
@staticmethod
def A():
print("this is a staticmethod function")
def B(self):
print("this is a func")
c = "cc desc"
if __name__ == '__main__':
print(sys.modules[__name__]) # <module '__main__' from 'D:/ /lianxi/clazz/test.py'>
print(GetText) # <class '__main__.GetText'>
#
print(getattr(GetText, "A")) # <function GetText.A at 0x00000283C2B75798>
#
getattr(GetText, "A")() # this is a staticmethod function
getattr(GetText(), "A")() # this is a staticmethod function
print(getattr(GetText, "B")) # <function GetText.B at 0x000001371BF55798>
#
# getattr(GetText, "B")()
getattr(GetText(), "B")() # this is a func
print(getattr(GetText, "c")) # cc desc
print(getattr(GetText(), "c")) # cc desc
2:モジュールからクラスを取得する(クラス名文字列でクラスオブジェクトを取得する)新しいtest 1.pyのコードは以下の通りです。
#encoding:utf-8
import sys
import test
print(sys.modules[__name__])
#
class_name = getattr(test, "GetText")
print(class_name) # <class 'test.GetText'>
#
print(getattr(class_name, "A")) # <function GetText.A at 0x000001D637365678>
#
getattr(class_name, "A")() # this is a staticmethod function
getattr(class_name(), "A")() # this is a staticmethod function
print(getattr(class_name(), "B")) # <bound method GetText.B of <test.GetText object at 0x0000022D3B9EE348>>
# getattr(class_name, "B")()
getattr(class_name(), "B")() # this is a func
#
print(getattr(class_name, "c")) # cc desc
print(getattr(class_name(), "c")) # cc desc
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。