有一种方法使用
*kwargs
,我正在尝试传递对象的属性。
我当前的代码看起来像这样:
user = User(username="User", password="Password")
attr = "username"
session.execute(select(User).filter_by(attr=getattr(user, attr))).scalar_one()
我可以使用
getattr()
来获取属性的值,但不确定如何使用要使用的 attr 的值。
我尝试仅使用
attr
作为参数名称,并且得到了 User does not contain property attr
的响应
我希望的是,当我将
attr
更改为密码时,它将使用密码作为参数和要使用的值进行过滤。
我用谷歌搜索了不同的方式来表达我的问题,但我不断找到python变量中的函数参数名称。那里提供的答案并不能回答我的问题,除非我误解了问题和答案。
getattr()
需要一个字符串作为属性名称。但您可以通过使用 f 字符串轻松解决此问题:
getattr(user, f'{attr}')
会完成工作