在Python中检查A是否是B的超类

发布于 2024-08-16 04:39:21 字数 115 浏览 6 评论 0原文

class p1(object): pass
class p2(p1): pass

所以p2是p1的子类。有没有办法以编程方式找出 p1 是 p2 的超类[之一]?

class p1(object): pass
class p2(p1): pass

So p2 is the subclass of p1. Is there a way to find out programmatically that p1 is [one of] the superclass[es] of p2 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

屋檐 2024-08-23 04:39:21

使用.__bases__ 似乎就是您正在寻找的......

>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)

using <class>.__bases__ seems to be what you're looking for...

>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)
梨涡 2024-08-23 04:39:21

是的,有办法。您可以使用 issubclass 函数。

如下:

class p1(object):pass
class p2(p1):pass

issubclass(p2, p1)

Yes, there is way. You can use a issubclass function.

As follows:

class p1(object):pass
class p2(p1):pass

issubclass(p2, p1)
东北女汉子 2024-08-23 04:39:21

根据您想要执行的操作,“mro”方法也很有用。

Depending on what you're trying to do, the "mro" method can also be useful.

贱人配狗天长地久 2024-08-23 04:39:21

我认为你的意思是使用“class”而不是“def”..:)无论如何,尝试p2.__bases__

I think you meant to use "class" instead of "def".. :) Anyway, try p2.__bases__

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文