Python相当于Ruby'is_a?'

Ton*_*nin 1 ruby python

我想知道是否有一个Python相当于Ruby的'is_a?' 方法?

> "".is_a? String
=> true
Run Code Online (Sandbox Code Playgroud)

信息:

is_a?(class) ? true or false
Run Code Online (Sandbox Code Playgroud)

如果class是obj的类,或者如果class是obj中包含的obj或模块的超类之一,则返回true.

谢谢.

Joh*_*lla 5

这取决于你想要的确切部分.

如果您想知道foo是类的实例C还是其任何祖先,那么:

isinstance(foo, C)
Run Code Online (Sandbox Code Playgroud)

如果你想知道是否foo是一个实例C,只有C,则:

type(foo) == C
Run Code Online (Sandbox Code Playgroud)

从广义上讲,经常使用类似的东西isinstance(...)或者type(...)是代码味道,因为这意味着鸭子打字被破坏了,而且Python在很大程度上依赖于那种合同.例如,见例如有害的.