ホームページ > バックエンド開発 > Python チュートリアル > オブジェクトの種類を確認する方法

オブジェクトの種類を確認する方法

anonymity
リリース: 2019-05-25 15:10:48
オリジナル
4261 人が閲覧しました

Python には type() と isinstance() という 2 つの型判定関数があります。

オブジェクトの種類を確認する方法

type() を使用する

まず、オブジェクト タイプを決定し、type() 関数を使用します。

基本的な型は type() で判断できます:

>>> type(123)
<type &#39;int&#39;>
>>> type(&#39;str&#39;)
<type &#39;str&#39;>
>>> type(None)
<type &#39;NoneType&#39;>
ログイン後にコピー

変数が関数またはクラスを指している場合、type() で判断することもできます:

>>> type(abs)
<type &#39;builtin_function_or_method&#39;>
>>> type(a)
<class &#39;__main__.Animal&#39;>
ログイン後にコピー

しかし、 type() 関数の戻り値は? type についてはどうですか? type タイプを返します。

isinstance() の使用

クラスの継承関係の場合、type() を使用するのは非常に不便です。クラスのタイプを決定するには、 isinstance() 関数を使用できます。

最後の例を確認してみましょう。継承関係が次の場合:

object -> Animal -> Dog -> Husky
ログイン後にコピー

次に、 isinstance() はオブジェクトが特定の型であるかどうかを知ることができます。まず 3 種類のオブジェクトを作成します。

>>> a = Animal()
>>> d = Dog()
>>> h = Husky()
ログイン後にコピー

次に、判断します。

>>> isinstance(h, Husky)
True
ログイン後にコピー

h 変数は Husky オブジェクトを指しているため、問題はありません。

判定:

>>> isinstance(h, Dog)
True
ログイン後にコピー

h 自体は Husky 型ですが、Husky は Dog から継承されているため、h も Dog 型です。つまり、 isinstance() は、オブジェクトがその型自体であるか、その型の親継承チェーン上にあるのかを判断します。

したがって、h はまだ動物タイプであると確信できます:

>>> isinstance(h, Animal)
True
ログイン後にコピー

同様に、実際のタイプが Dog である d も動物タイプです:

>>> isinstance(d, Dog) and isinstance(d, Animal)
True
ログイン後にコピー

ただし、 d は Husky 型ではありません :

>>> isinstance(d, Husky)
False
ログイン後にコピー

type() で判定できる基本型は isinstance() でも判定できます:

>>> isinstance(&#39;a&#39;, str)
True
>>> isinstance(u&#39;a&#39;, unicode)
True
>>> isinstance(&#39;a&#39;, unicode)
False
ログイン後にコピー

そして変数かどうかも判定できます次のような特定の型の 1 つです。コードを使用して、str か unicode かを判断できます。

>>> isinstance(&#39;a&#39;, (str, unicode))
True
>>> isinstance(u&#39;a&#39;, (str, unicode))
True
ログイン後にコピー

str と unicode は両方とも Basestring から継承されるため、上記のコードを次のように単純化することもできます。

#
>>> isinstance(u&#39;a&#39;, basestring)
True
ログイン後にコピー

型を決定する type() があるのに、なぜ isinstance() があるのでしょうか?明らかな違いの 1 つは、サブクラスの判断にあります。 type() は、サブクラスを親タイプとはみなしません。 isinstance() は、サブクラスを親クラス型とみなします。

以上がオブジェクトの種類を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート