当前位置: 首页 > 面试题库 >

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

程博学
2023-03-14
问题内容

假设我有一个西服套装和四个西服套装子类别:Heart,Spade,Diamond和Club。

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

我有一个方法,该方法接收西装作为参数,这是一个类对象,而不是实例。更准确地说,它可能仅接收以下四个值之一:Heart,Spade,Diamond,Club。我该如何做出保证这种事情的断言?就像是:

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

我正在使用Python 3。


问题答案:

您可以使用issubclass()像这样assert issubclass(suit, Suit)



 类似资料:
  • 问题内容: 在android app测试套件中,我有一个类似这样的类,其中一个视图是: 现在,我有一个视图对象列表,其中可能包含对象,但是在这种情况下,我只关心它们是子类还是“实例” 。我想做类似的事情: 问题在于,当遇到一个对象时,它不会评估为“实例”。有办法吗? 问题答案: 您必须仔细阅读此方法的API。有时,您很容易感到困惑。 可以是: API说:确定 指定的Object (参数) 是否与

  • 问题内容: 我正在玩Java的反射API,并尝试处理一些字段。现在,我要确定字段的类型。字符串很简单,只需执行即可。其他非派生类也是如此。但是,如何检查派生类?例如作为的子类。我无法找到任何或方法。我是否需要遍历所有人并自己找到超人? 问题答案: 您需要此方法: 一般情况下,(以上)应替换为并应替换为 从JavaDoc: 确定此对象表示的类或接口是否与指定参数表示的类或接口相同或超类或超接口。如果

  • 问题内容: 我想知道一个类是否为枚举,但是我想我缺少了一些东西: 它给我一个错误,指出Enum.class无效。那么,如何检查类是否为枚举?我很确定有可能确定这一点,但我无法做到。 谢谢 问题答案: 正确的语法为: 但对于枚举,这是一种更方便的方法: 更新:对于带有主体的枚举项(例如,覆盖方法),这实际上将不起作用。在这种情况下,请使用 参考:

  • 问题内容: 如何测试是否是的子类? 问题答案: 您是否在寻找:

  • 我使用AudioRecords API在我的应用程序中录制音频(WAV),它成功录制。但是当我在后台运行其他录制应用程序时尝试录制时,我的应用程序的行为很奇怪。 当另一台录音机正在运行时,MediaRecorder API会在尝试开始录制时引发异常,但AudioRecorder API会初始化录音机实例并且不会引发任何异常,因此我无法识别是否有任何录音机实例正在运行。 这种情况已经在三星S3的默认

  • 对于此示例: 如何检查 是否是 Foo 的实例(但不是其 foo 子类的实例)?那是: checkInstance(qux,Foo.class)=true checkInstance(qux,Bar.class)=false 有没有类似于< code>instanceof的语句来进行这种检查?或者我应该使用< code>qux.getClass()。equals(Foo.class)