gpt4 book ai didi

python - 如何在Python中对int对象执行__eq__、__gt__等?

转载 作者:行者123 更新时间:2023-12-01 04:51:57 25 4
gpt4 key购买 nike

我正在开发一个需要多个规则来验证的类,例如如果某个模式出现大于、等于、小于某个数字。我有这个正则表达式的输出,我正在列表中验证并检查列表的长度。现在我如何动态调用这些方法之一(__gt____eq__ 等)?

我的方法:

func = getattr(len(re.findall('\d+', 'password1'), method_name) #method_name 
#can be any one of the values __eq__, __gt__).

if func(desired_length):
print ":validated"
else:
raise Exception("Not sufficient complexity")

例如,对于 method_name='__eq__'desired_length=1,上述结果将是 True。对于 method_name='__gt__'desired_length=1,上述结果将是 False(如果数字在此字符串中出现多次)。

但我意识到 int 对象并没有真正实现这些方法。有什么办法可以实现这个目标吗?

最佳答案

也许您应该考虑 operator,而不是在此处的 int 实例上使用 getattr模块。然后您可以获取比较运算符并传递 int 实例和所需的长度。一个完整的例子是这样的:

import operator

method_name = '__eq__'
desired_length = 1

func = getattr(operator, method_name)
n_ints = len(re.findall('\d+', 'password1'))
if func(n_ints, desired_length):
print('Yeah Buddy!')

关于python - 如何在Python中对int对象执行__eq__、__gt__等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28243215/

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