[英]Get base class type in Python
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
是否有type()
的替代方法可以检查对象是否从类继承?
是的, isinstance : isinstance(obj, Klass)
如果您知道要检查的内容,则isinstance
和issubclass
适用。 如果你不知道,如果你真的想列出基本类型,可以使用特殊属性__bases__
和__mro__
来列出它们:
要列出直接基类,请考虑class.__bases__
。 例如:
>>> from pathlib import Path
>>> Path.__bases__
(<class 'pathlib.PurePath'>,)
要有效地递归列出所有基类,请考虑class.__mro__
或class.mro()
:
>>> from pathlib import Path
>>> Path.__mro__
(<class 'pathlib.Path'>, <class 'pathlib.PurePath'>, <class 'object'>)
>>> Path.mro()
[<class 'pathlib.Path'>, <class 'pathlib.PurePath'>, <class 'object'>]
>>> class a:
... pass
...
>>> class b(a):
... pass
...
>>> c = b()
>>> d = a()
>>> type(c) == type(d)
True
type()
返回一个类型对象。 a 是实际的类,而不是类型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.