Pythonで型をチェックする標準的な方法は何ですか? 質問する

Pythonで型をチェックする標準的な方法は何ですか? 質問する

オブジェクトが特定の型であるかどうか、または特定の型から継承されているかどうかを確認するにはどうすればよいですか?

オブジェクトがo型であるかどうかを確認するにはどうすればよいですかstr?


初心者は、文字列がすでに「数値」であると誤って想定することがよくあります。Python 3.x がinput型を変換することを期待するか、文字列が同時に'1'整数でもあることを期待します。これは、これらの質問に対する間違った標準です。質問を注意深く読んでから、文字列が数値 (float または int) を表しているかどうかを確認するにはどうすればよいですか?入力を数値として読み取るにはどうすればよいですか?および/または有効な回答が得られるまでユーザーに入力を求める適切に。

ベストアンサー1

使用isinstanceoが のインスタンスstrまたはサブクラスであるかどうかを確認しますstr

if isinstance(o, str):

のサブクラスを除いて、の型がoとまったく同じであるかどうかを確認するにはstr、次のようにしますstr

if type(o) is str:

見る組み込み関数関連情報については、Python ライブラリ リファレンスを参照してください。


Python 2 での文字列のチェック

Python 2 の場合、o文字列かどうかを確認するには次の方法の方が適しています。

if isinstance(o, basestring):

これは Unicode 文字列もキャッチするためです。unicodeは のサブクラスではありません。と はstr両方とものサブクラスです。strunicodebasestringbasestringPython 3では厳格な分離文字列の(str) とバイナリデータ (bytes)。

あるいは、isinstanceクラスのタプルを受け入れます。がいずれかのサブクラスのインスタンスであるTrue場合は、が返されますo(str, unicode)

if isinstance(o, (str, unicode)):

おすすめ記事