假设我有一个类和一个函数:
class AddressValidator(self):
def __init__(self):
pass
def validate(address):
# ...
def validate_address(addr):
validator = AddressValidator()
return validator.validate(addr)
如果您愿意,该函数是使用该类的快捷方式。现在,如果这个函数必须运行数千次怎么办?如果验证器类实际上必须在实例化时做一些事情,比如连接到数据库,那么一遍又一遍地创建它是非常浪费的。我想知道我是否可以做这样的事情:
def validate_address(addr):
if not hasattr(validate_address, 'validator'):
validate_address.validator = AddressValidator()
validator = validate_address.validator
return validator.validate(addr)
现在验证器类只被实例化一次并保存在“函数中”,也就是说。不过,我从未见过这样做,所以我猜这是不好的做法。如果是这样,为什么?
注意:我知道我可以将验证器对象缓存在全局模块中。当我想避免乱扔模块时,我只是好奇这是否是一个可行的解决方案。