Powiedzmy, że mam garnitur klasy i cztery podklasy garnituru: Serce, Szpadel, Diament, Klub.
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
Mam metodę, która odbiera kolor jako parametr, który jest obiektem klasy, a nie instancją. Dokładniej, może otrzymać tylko jedną z czterech wartości: Serce, Szpadel, Diament, Klub. Jak mogę złożyć twierdzenie, które zapewni takie rozwiązanie? Coś jak:
def my_method(suit):
assert(suit subclass of Suit)
...
Używam Python 3.
_class
, czyniąc je podobnymi suit_class
. I zaproponował taką konwencję nazywania w odpowiednim pytaniem .
my_method(Heart)
my_method(Spade)
...
inspect.isclass
lub po prostu użyć go isinstance(myvar, type)
w Pythonie 3, ponieważ issubclass
spowoduje to błąd, jeśli zostanie przekazany nieklasowy. Zobacz tę odpowiedź . Skomentowałbym odpowiedź poniżej, ale nigdy nie ujrzałaby światła dziennego.
my_method
można uzyskać jako parametry: „może otrzymać tylko jedną z czterech wartości: Serce, Szpadel, Diament, Klub”. Te wartości są obiektami klasy, a nie instancjami klasy. Wydaje mi się to dość jasne, choć przypuszczam, że masz rację co do niejasności, ponieważ odpowiedzi obejmują obie możliwości. Z przyjemnością edytujesz pytanie, jeśli masz na to wyraźniejsze sformułowanie. Dziękuję za komentarz.