如何对 Python 中的 int 对象执行 __eq__、__gt__ 等?

How to perform __eq__, __gt__ etc on int object in Python?

我正在开发一个 class,它需要多个规则来验证,例如如果某个模式出现大于、等于、小于某个数字。我有这个正则表达式的输出,我正在列表中验证并检查列表的长度。现在如何动态调用这些方法之一(__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 对象并没有真正实现这些方法。有什么办法可以实现吗?

与其在此处的 int 实例上使用 getattr,不如考虑使用 operator 模块。然后你可以获取比较运算符并传递 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!')