Python Ruby の「is_a?」に相当

概要

Ruby の「is_a」に相当する Python はあるのでしょうか?方法?

> "".is_a? String
=> true

情報:

is_a?(class) → true or false

ありがとう。

解決策

それは正確にどの部分が必要かによって異なります。

foo がクラス C のインスタンスであるか、そのサブクラスのインスタンスであるかを知りたい場合は、次のようにします。

isinstance(foo, C)

foo が C のインスタンスであり、C のみであるかどうかを知りたい場合は、次のようにします。

type(foo) == C

大まかに言えば、 isinstance(…) や type(…) のようなものの頻繁な使用はコードの臭いです。ダックタイピングが壊れていることを意味し、Python はその種の規約に大きく依存しているからです。たとえば、有害であると考えられるインスタンスを参照してください。