gpt4 book ai didi

python - 在 python 中类型转换

转载 作者:行者123 更新时间:2023-11-28 19:45:57 25 4
gpt4 key购买 nike

我在 SO 上查看了类似的问题,但没有人回答我的问题。对于前。 How do you cast an instance to a derived class? .但答案似乎并不是我想要的。

这是我的情况。我有一个像 Django 中的类结构

class Base:
...some stuff...

class Derived(Base):
...some more stuff...

现在当我在 Django 中进行一些查询时,我总是得到 Base 类的对象。

 baseobj = get_object_or_404(Base, id = sid)

在运行时,我还会遇到具有一些额外属性的“派生”对象。我能够确定一个对象是 Base 还是派生的(Base 类对象中有足够的信息)。但是我应该如何访问那些只存在于派生类中的额外字段。我无法向下转换“Base”->“Derived”。我该如何处理?

编辑:

我发现了问题。 Django 将派生类的“附加属性”存储在单独的表中。因此,由于这行代码出现了问题。

baseobj = get_object_or_404(Base, id = sid)

baseobj 永远属于基类,不会有派生类的任何属性。我必须进行额外的查询才能获取 Derived 类对象。

baseobj = get_object_or_404(Base, id = sid)
if baseobj.isDerivedType:
derivedobj = get_object_or_404(Derived, id = sid)

最佳答案

这种在 Django 领域的继承闻起来像 multi-table inheritance大部头书。根据文档,假设一切都正确连接,你应该能够做到:

baseobj.derived    # note: small 'd'

关于python - 在 python 中类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4904763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com