オブジェクトが特定の型であるかどうか、または特定の型から継承されているかどうかを確認するにはどうすればよいですか?
オブジェクトがo
型であるかどうかを確認するにはどうすればよいですかstr
?
初心者は、文字列がすでに「数値」であると誤って想定することがよくあります。Python 3.x がinput
型を変換することを期待するか、文字列が同時に'1'
整数でもあることを期待します。これは、これらの質問に対する間違った標準です。質問を注意深く読んでから、文字列が数値 (float または int) を表しているかどうかを確認するにはどうすればよいですか?、入力を数値として読み取るにはどうすればよいですか?および/または有効な回答が得られるまでユーザーに入力を求める適切に。
ベストアンサー1
使用isinstance
o
が のインスタンス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
両方とものサブクラスです。str
unicode
basestring
basestring
Python 3では、厳格な分離文字列の(str
) とバイナリデータ (bytes
)。
あるいは、isinstance
クラスのタプルを受け入れます。がいずれかのサブクラスのインスタンスであるTrue
場合は、が返されます。o
(str, unicode)
if isinstance(o, (str, unicode)):