[解決済み] オブジェクトの種類を決定しますか?
2022-03-17 04:12:32
質問
変数がリストなのかディクショナリーなのか、それともそれ以外なのかを判断する簡単な方法はありますか?私は、どちらかのタイプである可能性があるオブジェクトを取得し、私は違いを見分けることができるようにする必要があります。
どのように解決するのですか?
オブジェクトのタイプを識別するのに役立つ2つの組み込み関数があります。使用できるのは
type()
はオブジェクトの正確な型が必要な場合、そして
isinstance()
から
チェック
オブジェクトの型と何かを照合します。通常は
isinstance()
これは非常に堅牢で、型継承もサポートしているからです。
オブジェクトの実際の型を取得するには、組み込みの
type()
関数があります。唯一のパラメータとしてオブジェクトを渡すと、そのオブジェクトの型オブジェクトを返します。
>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True
もちろん、これはカスタムタイプでも有効です。
>>> class Test1 (object):
pass
>>> class Test2 (Test1):
pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True
なお
type()
はオブジェクトの即時型を返すだけで、型継承については教えてくれません。
>>> type(b) is Test1
False
それをカバーするために
isinstance
関数を使用します。もちろん、これは組み込み型にも有効です。
>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True
isinstance()
は、派生型も受け入れるため、オブジェクトの型を保証する方法として通常推奨されています。そのため、(何らかの理由で)実際に型オブジェクトが必要でない限りは
isinstance()
よりも優先されます。
type()
.
の第2パラメータは
isinstance()
も型のタプルを受け付けるので、一度に複数の型をチェックすることができます。
isinstance
は、オブジェクトがこれらの型のいずれかである場合、true を返します。
>>> isinstance([], (tuple, list, set))
True
関連
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] 型チェック:typeof、GetType、is?
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].