如何检查(在运行时)一个类是否是另一个类的子类?

2024-04-28 09:06:55 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一套职业装和四个职业装:心脏,铁锹,钻石,棍棒。

class Suit:
   ...
class Heart(Suit):
   ...
class Spade(Suit):
   ...
class Diamond(Suit):
   ...
class Club(Suit):
   ...

我有一个方法接收一个suit作为参数,它是一个类对象,而不是一个实例。更准确地说,它可能只接受四个值中的一个:心、铲子、钻石、棍子。我怎样才能做出一个断言来保证这样的事情?类似于:

def my_method(suit):
   assert(suit subclass of Suit)
   ...

我在用Python 3。


Tags: 对象方法参数classspadesuitclubdiamond
3条回答

你可以像这样使用issubclass()

^{}

节选:

Return true if class is a subclass (direct, indirect or virtual) of classinfo.

如果有实例,则可以使用isinstance;如果有类,则可以使用issubclass。通常认为这是个坏主意。通常在Python中,通过尝试对某个对象执行某个操作来判断该对象是否能够执行某个操作。

相关问题 更多 >