首页 > 解决方案 > 无需硬编码即可获取类的字段名称

问题描述

我有一个像这样的 Pydantic 模型类

class User(BaseModel):
   username: str
   firstname: str
   lastname: str

现在,我希望能够在没有硬编码的情况下引用“用户名”(就像我如何能够引用类名一样)

setup_index(User.__name__, "username") 

有没有办法不经过代码生成路线?

标签: pythonpydantic

解决方案


  1. 如果客户端知道成员的名称,则getattr(user, 'username')可以使用(如@michael-butscher 所述)。
  2. 如果客户端不知道成员的名称,则可以通过创建 getter 函数name_getter = operator.attrgetter('username')并将其提供给客户端以用作name_getter(user). 可以通过在中定义一个getter方法User并提供该方法的引用来达到相同的效果。无论哪种方式,如果username是实现细节,那么这种方法有助于向客户端隐藏这些细节。

推荐阅读