Diciamo che ho un seme di classe e quattro sottoclassi di seme: Heart, Spade, Diamond, Club.
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
Ho un metodo che riceve un seme come parametro, che è un oggetto di classe, non un'istanza. Più precisamente, può ricevere solo uno dei quattro valori: Heart, Spade, Diamond, Club. Come posso fare un'affermazione che garantisca una cosa del genere? Qualcosa di simile a:
def my_method(suit):
assert(suit subclass of Suit)
...
Sto usando Python 3.
_class
, rendendoli simili suit_class
. Ho proposto una simile convenzione di denominazione in una domanda pertinente .
my_method(Heart)
my_method(Spade)
...
inspect.isclass
o semplicemente utilizzarla isinstance(myvar, type)
in Python 3, poiché issubclass
genererà un errore se viene passata una non classe. Vedere questo risposta . Avrei commentato la risposta qui sotto, ma non avrebbe mai visto la luce del giorno.
my_method
possibili che possono ottenere come parametri: "può ricevere solo uno dei quattro valori: Cuore, Vanga, Diamante, Club". Questi valori sono oggetti di classe, non istanze di classe. Mi sembra abbastanza chiaro, anche se suppongo che tu abbia ragione sulla vaghezza perché le risposte coprono entrambe le possibilità. Sei più che benvenuto a modificare la domanda se hai un testo più chiaro per questo. Grazie per il commento.