如何在 pydantic 中打印 sub-class 名称?

How to print sub-class name in pydantic?

我用pydantic定义了一个class。我创建了一个从父 class 继承的子 class。当我打印 sub-class 时,为什么它仍然显示父 class 名称?我应该怎么做才能打印 Word class?

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')]

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

任何 class 而不仅仅是 Pydantic 的行为方式相同

class Asd:
    pass

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

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

在您的情况下,如果 SubWordWord 相同,则无需将它们分开。如果您想在代码中使用 Word,只需使用 Word

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

class Word(SubWord):
    pass