我想知道是否有一个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.
谢谢.
这取决于你想要的确切部分.
如果您想知道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在很大程度上依赖于那种合同.例如,见例如有害的.