Python での匿名クラスとオブジェクトの探索
Python の組み込み type() 関数は、オブジェクトが属するクラスを返します。 Python では、クラスは、組み込みクラスとユーザー定義クラスの両方が class 型のオブジェクトです。
例
class myclass:
def __init__(self):
self.myvar=10
return
obj = myclass()
print ('class of int', type(int))
print ('class of list', type(list))
print ('class of dict', type(dict))
print ('class of myclass', type(myclass))
print ('class of obj', type(obj))
次の出力が生成されます-
class of int <class 'type'> class of list <class 'type'> class of dict <class 'type'> class of myclass <class 'type'>
type() には次のように 3 つの引数バージョンがあります-
構文
newclass=type(name, bases, dict)
上記の構文を使用すると、クラスを動的に作成できます。関数型の 3 つの引数は次のとおりです。 −
-
name − 新しいクラスの __name__ 属性となるクラスの名前
-
ベース - 親クラスで構成されるタプル。派生クラスでない場合は空白にすることができます
-
dict − 属性、メソッド、およびそれらの値を含む新しいクラスの名前空間を形成する辞書。
匿名クラスの作成
上記のバージョンの type() 関数を使用して匿名クラスを作成できます。 name 引数は null 文字列で、2 番目の引数はオブジェクト クラスの 1 つのクラスのタプルです (Python の各クラスはオブジェクト クラスから継承されることに注意してください)。特定のインスタンス変数を 3 番目の引数の辞書として追加します。現時点では空のままにしておきます。
anon=type('', (object, ), {})
匿名オブジェクトの作成
この匿名クラスのオブジェクトを作成するには-
obj = anon()
print ("type of obj:", type(obj))
結果は、オブジェクトが匿名クラスであることを示します。
type of obj: <class '__main__.'>
匿名クラスと匿名オブジェクトの例
インスタンス変数やインスタンス メソッドを動的に追加することもできます。この例を見てください -
def getA(self):
return self.a
obj = type('',(object,),{'a':5,'b':6,'c':7,'getA':getA,'getB':lambda self : self.b})()
print (obj.getA(), obj.getB())
次の出力が生成されます-
5 6
Python
- マスター Python メタプログラミング:高度なメタクラス技術
- Python-モジュール
- Python タイムスタンプを日時に変換 (およびその逆) – クイックガイド
- PyUnit チュートリアル:Python ユニット テスト フレームワーク (例付き)
- Python JSON:JSON ファイルのエンコード (ダンプ)、デコード (ロード)、読み取り
- Python ファイルが存在するかどうかを確認します。 Python でディレクトリが存在するかどうかを確認する方法
- Python 文字列の長さ | len() メソッドの例
- 例を含む Python Lambda 関数
- Python 再帰
- Pillow を使用した Python 画像処理
- パイソン セット