Python type()
1403 ワード
type()
関数は、1つのタイプまたは変数のタイプを表示することができ、Hello
はclassであり、そのタイプはtype
であり、h
はインスタンスであり、そのタイプはclass Hello
である.classの定義は実行時に動的に作成され、classを作成する方法は
type()
関数を使用することです.type()
関数は、オブジェクトのタイプを返したり、type()
の定義を必要とせずにHello
関数でclass Hello(object)...
クラスを作成したりすることができます.>>> def fn(self, name='world'): #
... print('Hello, %s.' % name)
...
>>> Hello = type('Hello', (object,), dict(hello=fn)) # Hello class
>>> h = Hello()
>>> h.hello()
Hello, world.
>>> print(type(Hello))
>>> print(type(h))
classオブジェクトを作成するには、
type()
関数を使用して3つのパラメータを順次入力します.fn
をメソッド名hello
にバインドします.type()
関数で作成されたクラスは、直接classと同じです.Python解釈器がclass定義に遭遇した場合、class定義の構文をスキャンしただけで、type()
関数を呼び出してclassを作成します.通常、クラスは
class Xxx...
で定義されていますが、type()
関数では、動的にクラスを作成できます.つまり、動的言語自体がランタイム動的にクラスを作成することをサポートしています.これは静的言語とは非常に異なり、静的言語のランタイムにクラスを作成するには、ソースコード文字列を構築してコンパイラを呼び出す必要があります.あるいは、いくつかのツールを使用してバイトコードを生成して実装すると、本質的に動的にコンパイルされ、非常に複雑になります.