Digamos que eu tenho um naipe de classe e quatro subclasses de naipe: Coração, Pá, Diamante, Clube.
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
Eu tenho um método que recebe uma ação como parâmetro, que é um objeto de classe, não uma instância. Mais precisamente, ele pode receber apenas um dos quatro valores: Coração, Pá, Diamante, Clube. Como posso fazer uma afirmação que garanta tal coisa? Algo como:
def my_method(suit):
assert(suit subclass of Suit)
...
Estou usando o Python 3.
_class, tornando-os semelhantes suit_class. I propôs tal convenção de nomenclatura em uma questão relevante .
my_method(Heart) my_method(Spade)...
inspect.isclassou simplesmente usar uma condição isinstance(myvar, type)no Python 3, pois isso issubclassgerará um erro se ela passar por uma não-classe. Veja esta resposta . Eu teria comentado a resposta abaixo, mas nunca teria visto a luz do dia.
my_methodpodem ser obtidos como parâmetros: "ele pode receber apenas um dos quatro valores: Coração, Pá, Diamante, Clube". Esses valores são objetos de classe, não instâncias de classe. Parece-me bastante claro, embora eu suponha que você esteja certo sobre a imprecisão, porque as respostas cobrem as duas possibilidades. Você pode editar a pergunta se tiver uma redação mais clara. Obrigado pelo comentário.