1. ホーム
  2. python

[解決済み] Pythonで型をチェックする標準的な方法は何ですか?

2022-03-17 07:20:59

質問

与えられたオブジェクトが与えられた型であるかどうかを確認する最も良い方法は何ですか?オブジェクトが与えられた型を継承しているかどうかをチェックするのはどうでしょうか?

例えば、あるオブジェクトがあるとします。 o . であるかどうかを確認するにはどうすればよいのでしょうか? str ?

解決方法は?

を確認するには o のインスタンスです。 str またはそのサブクラス str を使用します。 isinstance (これが正規の方法です)。

if isinstance(o, str):

の型を確認するために o はまさに str (サブクラスを除く)。

if type(o) is str:

次のような方法も有効で、場合によっては役に立ちます。

if issubclass(type(o), str):

参照 組込み関数 のPython Library Referenceに関連情報があります。

もうひとつ、この場合、Python 2を使用しているのであれば、実際に使用したいかもしれません。

if isinstance(o, basestring):

というのも、これはユニコード文字列もキャッチするからです ( unicode のサブクラスではありません。 str の両方が必要です。 strunicode のサブクラスです。 basestring ). なお basestring はもはやPython 3には存在せず、そこには 厳密な分離 の文字列 ( str ) とバイナリデータ ( bytes ).

あるいは isinstance はクラスのタプルを受け取ります。これは True もし o のいずれかのサブクラスのインスタンスです。 (str, unicode) :

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