Python Equivalent to Ruby 'is_a?'

python, ruby

Solution

It depends on exactly what part you want.

If you want to know whether `foo` is an instance of class `C` or any of its subclasses, then:

isinstance(foo, C)

If you want to know whether `foo` is an instance of `C` and only `C`, then:

type(foo) == C

Broadly speaking, frequent use of things like `isinstance(...)` or `type(...)` is a code smell because it means duck typing is broken, and Python relies heavily on that sort of contract. See, e.g., isinstance considered harmful.

Problem

I'm wondering is there a Python Equivalent to Ruby's 'is_a?' method? ``` > "".is_a? String => true ``` Info: ``` is_a?(class) → true or false ``` Returns true if class is the class of obj, or if class is one of the superclasses of obj or modules included in obj. Thank you.

Original source