クラスtype
と特定のタイプの関係は何ですか?クラス "タイプ"と特定のタイプの関係は何ですか?
私は、特定のタイプはtype
のサブクラスあったと思ったが、:
>>> type
<class 'type'>
>>> import builtins
>>> builtins.issubclass(type, object)
True
>>> builtins.issubclass(int, type)
False
感謝。
クラスtype
と特定のタイプの関係は何ですか?クラス "タイプ"と特定のタイプの関係は何ですか?
私は、特定のタイプはtype
のサブクラスあったと思ったが、:
>>> type
<class 'type'>
>>> import builtins
>>> builtins.issubclass(type, object)
True
>>> builtins.issubclass(int, type)
False
感謝。
私は、特定の種類は彼らではないタイプ
のサブクラスと思っていました。すべてのクラスはインスタンスのtype
です。 type
は、クラスのクラスとして機能します。 isinstance(class, type)
はTrue
を返し、issubclass
は正しくFalse
を返します。
issubclass
がTrue
を返す場合は、実際にtype
から継承したカスタムのメタクラス(クラスのクラス)が使用されます。例えば、EnumMeta
を取る:
>>> from enum import EnumMeta
>>> issubclass(EnumMeta, type)
EnumMeta
は、ベースクラス(それから継承)としてtype
を持っているので、これはTrue
です:
>>> EnumMeta.__bases__
(type,)
あなたがアップし、そのソースを見た場合、あなたはそれは次のように定義されています参照してくださいねclass EnumMeta(type): ...
。すべてのための
issubclass(type, object)
戻りTrue
Pythonで一つ一つがオブジェクトであるためには(つまり、すべてがobject
から継承します)。
いわゆる「メタクラス」。 –
ありがとうございます。 'type'はどんなクラスですか? – Tim
@Tim 'type'はそれ自身のインスタンスです:-)(' isinstance(type、type) '参照)。これは混乱し、1つのコメントで十分ではないことを説明します。これらの関係を説明する[この素敵な記事](http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html)をご覧ください。 –
いいえ、 'type'はクラスの** type **です。 –
[この質問](https://stackoverflow.com/questions/100003/what-is-a-metmetlass-in-python)には、そのトピックに関する優れた回答がいくつかあります。 –
このマントラを忘れないでください:* Pythonの*すべて*はオブジェクトです。つまり、クラスは別のオブジェクトであり、独自の*クラス(メタクラス - クラスのクラス)を持ちます。 –