如何确定Django模型中的类实例是否是另一个模型的子类?

dan*_*roa 11 python django inheritance subclass django-models

我有一个名为BankAccount基类的类.我也有CheckingAccountSavingsAccount继承的类BankAccount.

BankAccount不是一个抽象类,但我不是从它创建一个对象,只是继承类.

然后,我执行这样的查询:

account = BankAccount.objects.get(id=10)
Run Code Online (Sandbox Code Playgroud)

我怎么知道,如果帐户CheckingAccountSavingsAccount

我现在这样做的方式是这样的:

checking_account = CheckingAccount.objects.get(id=account.id)
Run Code Online (Sandbox Code Playgroud)

如果存在,则为a CheckingAccount,否则为a SavingsAccount.

Ign*_*ams 11

尝试使用checkingaccountsavingsaccount属性.它不会爆炸.


Est*_*ber 9

您可以使用isinstance(account, SavingsAccount),但通常最好避免使用它,并通过查看对象的属性使用鸭子类型推断,看看它是否像子类一样嘎嘎作响。

要查看对象是否具有属性,您可以使用恰当命名的hasattr内置 函数或使用getattr并检查是否引发 AttributeError 异常。

  • 鸭子类型推理链接已损坏 (2认同)