1. ホーム
  2. パイソン

[解決済み】あるクラスが他のクラスのサブクラスであるかどうかを(実行時に)確認するにはどうすればよいですか?

2022-04-04 11:14:37

質問

例えば、Suitというクラスと、そのサブクラスが4つあるとします。ハート、スペード、ダイヤ、クラブです。

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

パラメータとしてスートを受け取るメソッドがあるのですが、これはインスタンスではなくクラスオブジェクトです。より正確には、4つの値のうち1つだけを受け取ることができます。ハート、スペード、ダイヤ、クラブです。このようなことを保証するアサーションを作成するにはどうしたらよいでしょうか。次のようなものです。

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

Python 3を使用しています。

どのように解決するのですか?

を使用することができます。 issubclass() このように assert issubclass(suit, Suit) .