我想知道是否有一个Python相当于Ruby' is_a?'方法
> "".is_a? String
=> true
is_a?(class) → true or false
如果class是obj的类,或者class是其中之一,则返回true obj中包含的obj或模块的超类。
谢谢。
答案 0 :(得分:5)
这取决于你想要的确切部分。
如果您想知道foo
是C
类的实例还是其任何祖先,那么:
isinstance(foo, C)
如果您想知道foo
是C
的实例还是C
,那么:
type(foo) == C
从广义上讲,经常使用像isinstance(...)
或type(...)
之类的东西是代码气味,因为它意味着鸭子打字被打破,而Python在很大程度上依赖于那种合同。例如,参见 isinstance considered harmful 。
答案 1 :(得分:4)
我从未使用过Ruby,但该功能与isinstance
的功能非常相似:
>>> a = "string"
>>> isinstance(a, str)
True
>>>
此外,如果您不知道,这里有str
的参考。
答案 2 :(得分:2)
有一个isinstance(a,b)
函数可以检查a
是否属于b
类型。