如何在 pydantic 中打印子类名称?

发布于 2025-01-20 14:27:39 字数 424 浏览 1 评论 0原文

我使用 pydantic 来定义一个类。我创建了一个从父类固有的子类。当我打印子类时,为什么它仍然显示父类名称?打印Word类应该怎么做?

class SubWord(BaseModel):
    word: str
    label: str

Word = SubWord

word = [Word(word="apple",label="fruit")]
print(f'word: {word}')

这是结果:

word: [SubWord(word='apple', label='fruit')]

但我期待:

word: [Word(word='apple', label='fruit')]

我在这里应该做什么?提前致谢!

I used pydantic to define a class. I created a sub-class inherent from a parent class. When I print sub-class, why does it still show the parent class name? What should I do to print Word class?

class SubWord(BaseModel):
    word: str
    label: str

Word = SubWord

word = [Word(word="apple",label="fruit")]
print(f'word: {word}')

This is the result:

word: [SubWord(word='apple', label='fruit')]

But I am expecting:

word: [Word(word='apple', label='fruit')]

What should I do here? Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云归处 2025-01-27 14:27:39

任何类(而不仅仅是 Pydantic 类)都会以相同的方式运行。

class Asd:
    pass

Lol = Asd
>>> Asd
__main__.Asd
>>> Lol
__main__.Asd

在我的示例中,Lol 只是一个指向 Asd 的新变量,因此它不是一个新类。

就您而言,如果 SubWordWord 相同,则无需将它们分开。如果您想在代码中使用 Word,则只需使用该单词即可。

如果出于某种充分的原因需要将它们分开,那么您可以使用继承来有效地复制和重命名

class Word(SubWord):
    pass

Any class and not just Pydantic's would behave in the same way

class Asd:
    pass

Lol = Asd
>>> Asd
__main__.Asd
>>> Lol
__main__.Asd

In my example Lol is simply a new variable pointing at Asd, so it's not a new class.

In your case, if SubWord and Word are identical there is no need for you to separate them. Just use Word if that's the word you want to use in your code.

If you need to separate them for some good reason, then you can use inheritance to effectively copy and rename

class Word(SubWord):
    pass
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文