Предположим, что у меня есть классный костюм и четыре подкласса костюма: 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.
Вопрос остается неясным suit', является ли 'является экземпляром костюма подкласса, или если это объект класса. Ответы ниже охватывают обе возможности. – Leopd
@ Leopd: Это действительно непонятно? Я точно сказал, какие возможные четыре значения, которые 'my_method' может получить как параметры:« он может получить только одно из четырех значений: «Сердце, лопата, алмаз, клуб». Эти значения являются объектами класса, а не экземплярами класса. Мне кажется довольно понятным, хотя я полагаю, что вы правы в отношении неопределенности, потому что ответы охватывают обе возможности. Вы более чем можете отредактировать вопрос, если у вас есть более четкое слово для этого. Спасибо за комментарий. – snakile
@snakile да неясно. Из-за того, что на основе правильности чьего-то выражения выражается тонкий лед в этой теме. Многие новички не могут получить вещь все-есть-объект-в-питоне, могут выразить одно, а подумать другое. Это реальность и, в стороне от чистоты, вполне разумно ожидать такого поведения от новичков. Оставляя свою репутацию, указывается только на прямой * намек *, верно ли ваше выражение здесь, или я должен сказать «с точки зрения правильности». Я понимаю желание учитывать ваши знания, и все же иррационально не принимать во внимание постоянно обновляющихся новичков. – n611x007