gpt4 book ai didi

python - 从 pydantic 数据模型的打印和调用中隐藏变量(例如 'password')

转载 作者:行者123 更新时间:2023-12-05 02:36:45 24 4
gpt4 key购买 nike

我正在为某些用户/密码数据模型使用 pydantic。打印模型时,我想用其他内容(例如 ***)替换 password 的值,以防止密码是例如意外写入日志文件或控制台。

from pydantic import BaseModel

class myUserClass(BaseModel):
User = 'foo'
Password = 'bar'

def __str__(self):
return "Hidden parameters."

U = myUserClass()

print(U)
# > Hidden parameters. # Should be User='foo', Password='***' or similar

U # This will still show my password.
#> myUserClass(User='foo', Password='bar')

如何访问正常打印的字符串并仅将“bar”替换为“***”,但保留所有参数?

我怎样才能在调用 U 时也这样做?这可能不像通常调用 print 的日志记录和控制台输出一样重要。

最佳答案

Pydantic 提供 SecretStr数据类型。当转换为 str(例如打印)时被 *** 替换,实际值可以通过 get_secret_value() 方法获取:

class Foobar(BaseModel):
password: SecretStr
empty_password: SecretStr

# Initialize the model.
f = Foobar(password='1234', empty_password='')


# Assert str and repr are correct.
assert str(f.password) == '**********'
assert str(f.empty_password) == ''

# Assert retrieval of secret value is correct
assert f.password.get_secret_value() == '1234'
assert f.empty_password.get_secret_value() == ''

关于python - 从 pydantic 数据模型的打印和调用中隐藏变量(例如 'password'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70187831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com