Скажімо, у мене є костюм класу та чотири підкласи костюма: 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". Ці значення - це об'єкти класу, а не екземпляри класу. Мені це здається досить зрозумілим, хоча, мабуть, ти маєш рацію щодо невиразності, оскільки відповіді охоплюють обидві можливості. Ви можете більше відредагувати питання, якщо у вас є чіткіше питання. Дякуємо за коментар