繁体   English   中英

在 Python 中获取基类类型

[英]Get base class type in Python

class a:
    pass

class b(a):
    pass

c = b()
type(c) == a #returns False

是否有type()的替代方法可以检查对象是否从类继承?

是的, isinstanceisinstance(obj, Klass)

如果您知道要检查的内容,则isinstanceissubclass适用。 如果你不知道,如果你真的想列出基本类型,可以使用特殊属性__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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM