Disons que j'ai un costume de classe et quatre sous-classes de costume: Heart, Spade, Diamond, Club.
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
J'ai une méthode qui reçoit un costume comme paramètre, qui est un objet de classe, pas une instance. Plus précisément, il ne peut recevoir qu'une seule des quatre valeurs: Coeur, Bêche, Diamant, Club. Comment puis-je faire une affirmation qui assure une telle chose? Quelque chose comme:
def my_method(suit):
assert(suit subclass of Suit)
...
J'utilise Python 3.
_class
, ce qui les rend similaires suit_class
. J'ai proposé une telle convention de dénomination dans une question pertinente .
my_method(Heart)
my_method(Spade)
...
inspect.isclass
ou simplement utiliser isinstance(myvar, type)
en Python 3, comme issubclass
cela soulèvera une erreur si elle est transmise à une non-classe. Voir cette réponse . J'aurais commenté la réponse ci-dessous, mais elle n'aurait jamais vu le jour.
my_method
peuvent être paramétrées: "il ne peut recevoir qu'une seule des quatre valeurs: Coeur, Bêche, Diamant, Club". Ces valeurs sont des objets de classe, pas des instances de classe. Cela me semble assez clair, bien que je suppose que vous avez raison sur le flou parce que les réponses couvrent les deux possibilités. Vous êtes plus que bienvenus pour modifier la question si vous avez un libellé plus clair pour cela. Merci pour le commentaire.