Допустим, у меня есть классный костюм и четыре подкласса костюма: 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.
_class, делая их похожими suit_class. Я предложил такое соглашение об именах в соответствующем вопросе .
my_method(Heart) my_method(Spade)...
inspect.isclassили просто использовать isinstance(myvar, type)в Python 3, что issubclassвызовет ошибку, если она передана не классу. Смотрите этот ответ . Я бы прокомментировал ответ ниже, но он никогда бы не увидел свет.
my_methodмогут быть получены в качестве параметров: «он может получить только одно из четырех значений: Heart, Spade, Diamond, Club». Эти значения являются объектами класса, а не экземплярами класса. Мне кажется, это довольно ясно, хотя я полагаю, что вы правы насчет неопределенности, потому что ответы охватывают обе возможности. Вы можете редактировать вопрос, если у вас есть более ясное слово для этого. Спасибо за комментарий.