Скажімо, у мене є костюм класу та чотири підкласи костюма: Heart, Spade, Diamond, Club.
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
У мене є метод, який отримує костюм як параметр, який є об'єктом класу, а не екземпляром. Точніше, він може отримати лише одне з чотирьох значень: Серце, Лопата, Алмаз, Клуб. Як я можу зробити твердження, яке забезпечує таке? Щось на зразок:
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". Ці значення - це об'єкти класу, а не екземпляри класу. Мені це здається досить зрозумілим, хоча, мабуть, ти маєш рацію щодо невиразності, оскільки відповіді охоплюють обидві можливості. Ви можете більше відредагувати питання, якщо у вас є чіткіше питання. Дякуємо за коментар