lister - une class python




Comment puis-je déterminer si l'instance de classe du modèle Django est sous-classe d'un autre modèle? (4)

J'ai une classe appelée BankAccount comme classe de base. J'ai aussi des classes CheckingAccount et SavingsAccount qui héritent de BankAccount .

BankAccount n'est pas une classe abstraite mais je ne crée pas d'objet à partir de celle-ci, seulement les classes héritées.

Ensuite, j'exécute une requête comme celle-ci:

account = BankAccount.objects.get(id=10)

Comment savoir si le compte est CheckingAccount ou SavingsAccount ?

La façon dont je fais cela maintenant est la suivante:

checking_account = CheckingAccount.objects.get(id=account.id)

S'il existe, c'est un CheckingAccount , sinon, c'est un compte SavingsAccount .


Essayez d'utiliser les attributs checkingaccount et savingsaccount . Celui-ci ne va pas exploser.


Un peu bizarre, mais cela fonctionnerait:

>>> class BankAccount(object): pass
...
>>> class SavingsAccount(BankAccount): pass
...
>>> class CheckingAccount(BankAccount): pass
...
>>> x = SavingsAccount()
>>> type(x) == type(SavingsAccount())
True
>>> type(x) == type(CheckingAccount())
False






subclass