Digamos que tengo un traje de clase y cuatro subclases de traje: Corazón, Espada, Diamante, Club.
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
Tengo un método que recibe un traje como parámetro, que es un objeto de clase, no una instancia. Más precisamente, puede recibir solo uno de los cuatro valores: Corazón, Espada, Diamante, Club. ¿Cómo puedo hacer una afirmación que garantice tal cosa? Algo como:
def my_method(suit):
assert(suit subclass of Suit)
...
Estoy usando Python 3.
_class
, haciéndolos gustar suit_class
. Me propuse dicha convención una denominación en una cuestión relevante .
my_method(Heart)
my_method(Spade)
...
inspect.isclass
o simplemente usarla isinstance(myvar, type)
en Python 3, ya que issubclass
generará un error si se pasa una no clase. Mira esta respuesta . Hubiera comentado la respuesta a continuación, pero nunca habría visto la luz del día.
my_method
pueden obtener como parámetros: "puede recibir solo uno de los cuatro valores: Corazón, Espada, Diamante, Club". Esos valores son objetos de clase, no instancias de clase. Me parece bastante claro, aunque supongo que tienes razón acerca de la vaguedad porque las respuestas cubren ambas posibilidades. Eres más que bienvenido a editar la pregunta si tienes un lenguaje más claro para ello. Gracias por el comentario.