python - 无需硬编码即可获取类的字段名称
问题描述
我有一个像这样的 Pydantic 模型类
class User(BaseModel):
username: str
firstname: str
lastname: str
现在,我希望能够在没有硬编码的情况下引用“用户名”(就像我如何能够引用类名一样)
setup_index(User.__name__, "username")
有没有办法不经过代码生成路线?
解决方案
- 如果客户端知道成员的名称,则
getattr(user, 'username')
可以使用(如@michael-butscher 所述)。 - 如果客户端不知道成员的名称,则可以通过创建 getter 函数
name_getter = operator.attrgetter('username')
并将其提供给客户端以用作name_getter(user)
. 可以通过在中定义一个getter方法User
并提供该方法的引用来达到相同的效果。无论哪种方式,如果username
是实现细节,那么这种方法有助于向客户端隐藏这些细节。
推荐阅读
- next.js - next-i18next 在使用 getstaticprops 加载页面后重新渲染 _app.js
- python - 具有不同名称的字典以及如何打印名称
- python - Tweepy 4.0:“'Listener'对象没有属性'running'”错误?
- python - 直方图 - 当有 2 个以上的同一个单词的字母时下一行
- python - 在 python 中保存和加载函数
- flutter - Flutter 视频播放器,例如 Youtube、Amazon Prime
- python - 如何在条形图上显示平均值
- mysql - Mysql FIND_IN_SET GET ALL 列
- c++ - 从现代 C++ 中的命令类型中查找命令处理程序
- testing - 在 Netty 服务器中添加延迟