ホームページ > バックエンド開発 > Python チュートリアル > Pythonのデータ型判定型とisinstanceの違い

Pythonのデータ型判定型とisinstanceの違い

高洛峰
リリース: 2016-10-19 14:39:05
オリジナル
1844 人が閲覧しました

プロジェクトでは、各インターフェイスでクライアントから渡されたパラメータのタイプを検証します。検証に失敗した場合は、「パラメータ エラー」エラー コードがクライアントに返されます。

これにより、デバッグが容易になるだけでなく、堅牢性も向上します。クライアントは不正行為を行う可能性があるため、クライアントから渡されたパラメータを安易に信用しないでください。

type 関数を使用して型を検証します。これは非常に簡単に使用できます。たとえば、

>>type('foo') == str

True

>>type(2.3) in (int, float)

True

型を決定するためにType()があるのに、なぜisinstance()があるのでしょうか?

明らかな違いは、サブクラスの判断にあります。

type() は、サブクラスを親クラスの型とはみなしません。

isinstance() は、サブクラスを親クラス型とみなします。

千の言葉は一ヤードの価値があります。

class Foo(object):
    pass
    
class Bar(Foo):
    pass
    
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
   
class Foo(object):
    pass
   
class Bar(Foo):
    pass
   
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
输出
True
False
True
ログイン後にコピー

古いスタイルのクラスと新しいスタイルのクラスでは type() の結果が異なることに注意してください。昔ながらの授業は全部です。

class A:
    pass
    
class B:
    pass
    
class C(object):
    pass
    
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
   
class A:
    pass
   
class B:
    pass
   
class C(object):
    pass
   
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
输出
old style class <type &#39;instance&#39;>
old style class <type &#39;instance&#39;>
new style class <class &#39;__main__.C&#39;>
True
ログイン後にコピー

インスタンスが型よりも優れているということはありません。どちらがニーズに適しているかだけです。

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