Katakanlah saya memiliki Suit kelas dan empat subclass suit: Heart, Spade, Diamond, Club.
class Suit:
...
class Heart(Suit):
...
class Spade(Suit):
...
class Diamond(Suit):
...
class Club(Suit):
...
Saya memiliki metode yang menerima setelan sebagai parameter, yang merupakan objek kelas, bukan instance. Lebih tepatnya, itu mungkin hanya menerima satu dari empat nilai: Heart, Spade, Diamond, Club. Bagaimana saya bisa membuat pernyataan yang memastikan hal seperti itu? Sesuatu seperti:
def my_method(suit):
assert(suit subclass of Suit)
...
Saya menggunakan Python 3.
_class
, menjadikannya seperti suit_class
. Saya mengusulkan konvensi penamaan seperti itu dalam pertanyaan yang relevan .
my_method(Heart)
my_method(Spade)
...
inspect.isclass
atau hanya menggunakan isinstance(myvar, type)
Python 3, karena issubclass
akan memunculkan kesalahan jika melewati non-kelas. Lihat jawaban ini . Saya akan mengomentari jawaban di bawah ini, tetapi tidak akan pernah melihat cahaya hari.
my_method
dapat diperoleh sebagai parameter: "mungkin hanya menerima satu dari empat nilai: Heart, Spade, Diamond, Club". Nilai-nilai itu adalah objek kelas, bukan instance kelas. Tampaknya cukup jelas bagi saya, meskipun saya kira Anda benar tentang ketidakjelasan karena jawabannya mencakup kedua kemungkinan. Anda dipersilakan untuk mengedit pertanyaan jika Anda memiliki kata yang lebih jelas untuk itu. Terima kasih atas komentarnya.