我想覆盖父类属性装饰的属性,如下所示:
from pydantic import BaseModel
class Parent(BaseModel):
name: str = 'foo bar'
@property
def name_new(self):
return f"{'_'.join(self.name.split(' '))}"
class Child(Parent):
name_new = 'foo_bar_foo'
但我总是犯这样的错误:
NameError: Field name "name_new" shadows a BaseModel attribute; use a different field name with "alias='name_new'".
我试过这个:
from pydantic import BaseModel, Field
class Parent(BaseModel):
name: str = 'foo bar'
@property
def name_new(self):
return f"{'_'.join(self.name.split(' '))}"
class Child(Parent):
name_new_new = Field('foo_bar_foo', alias='name_new')
c = Child()
然而
c.name_new
仍然具有的值
foo_bar
而不是
foo_bar_foo
。如何在Child类中重写,以便
name_new
属性的值为
foo_bar_foo
?谢谢