获取 pydantic class 的所有字段名称的简短方法
Short way to get all field names of a pydantic class
class 的最小示例:
from pydantic import BaseModel
class AdaptedModel(BaseModel):
def get_all_fields(self, alias=False):
return list(self.schema(by_alias=alias).get("properties").keys())
class TestClass(AdaptedModel):
test: str
工作方式:
dm.TestClass.get_all_fields(dm.TestClass)
有没有办法让它工作而无需再次输入 class?
获取所有字段名称的所需方式:
dm.TestClass.get_all_fields()
如果将字段名称分配给属性,它也可以工作。任何让它更具可读性的方法
好的解决方案是使用 class-method instead of an instance method:
from pydantic import BaseModel, Field
class AdaptedModel(BaseModel):
@classmethod
def get_field_names(cls,alias=False):
return list(cls.schema(alias).get("properties").keys())
class TestClass(AdaptedModel):
test: str = Field(alias="TEST")
我们正在使用 Python 3.6.8,显然它已经被引入。为了完整起见,有人可以评论 @classmethod
何时存在吗?我假设从 3.6.
如果只使用 __fields__
:
from pydantic import BaseModel
class AdaptedModel(BaseModel):
parent_attr: str
class TestClass(AdaptedModel):
child_attr: str
TestClass.__fields__
输出:
{'parent_attr': ModelField(name='parent_attr', type=str, required=True),
'child_attr': ModelField(name='child_attr', type=str, required=True)}
这只是一个字典,您可以通过以下方式仅获取字段名称:TestClass.__fields__.keys()
查看模型属性:https://pydantic-docs.helpmanual.io/usage/models/#model-properties
class 的最小示例:
from pydantic import BaseModel
class AdaptedModel(BaseModel):
def get_all_fields(self, alias=False):
return list(self.schema(by_alias=alias).get("properties").keys())
class TestClass(AdaptedModel):
test: str
工作方式:
dm.TestClass.get_all_fields(dm.TestClass)
有没有办法让它工作而无需再次输入 class?
获取所有字段名称的所需方式:
dm.TestClass.get_all_fields()
如果将字段名称分配给属性,它也可以工作。任何让它更具可读性的方法
好的解决方案是使用 class-method instead of an instance method:
from pydantic import BaseModel, Field
class AdaptedModel(BaseModel):
@classmethod
def get_field_names(cls,alias=False):
return list(cls.schema(alias).get("properties").keys())
class TestClass(AdaptedModel):
test: str = Field(alias="TEST")
我们正在使用 Python 3.6.8,显然它已经被引入。为了完整起见,有人可以评论 @classmethod
何时存在吗?我假设从 3.6.
如果只使用 __fields__
:
from pydantic import BaseModel
class AdaptedModel(BaseModel):
parent_attr: str
class TestClass(AdaptedModel):
child_attr: str
TestClass.__fields__
输出:
{'parent_attr': ModelField(name='parent_attr', type=str, required=True),
'child_attr': ModelField(name='child_attr', type=str, required=True)}
这只是一个字典,您可以通过以下方式仅获取字段名称:TestClass.__fields__.keys()
查看模型属性:https://pydantic-docs.helpmanual.io/usage/models/#model-properties