gpt4 book ai didi

python - 在 Python 中设置变量时引发错误的正确方法

转载 作者:IT老高 更新时间:2023-10-28 22:17:21 25 4
gpt4 key购买 nike

在类里面进行错误检查的正确方法是什么?引发异常?设置一个包含所有错误的实例变量字典“错误”并返回它?

从一个类中打印错误是不是很糟糕?如果我提出异常,是否必须返回 False?

只是想确保我做的事情是正确的。下面是一些示例代码:

@property
def password(self):
return self._password

@password.setter
def password(self,password):
# Check that password has been completed
try:
# Check that password has a length of 6 characters
if (len(password) < 6):
raise NameError('Your password must be greater \
than 6 characters')

except NameError:
print 'Please choose a password'
return False

except TypeError:
print 'Please choose a password'
return False

#Set the password
self._password = password

#Encrypt the password
password_md5 = md5.new()
password_md5.update(password)
self._password_md5 = password_md5.hexdigest()

最佳答案

您的代码脱离了上下文,因此显然不是正确的选择。遵循一些提示:

  • 不要使用 NameError 异常,它只用于当名称,正如异常本身所说,在本地或全局范围内找不到时,使用 ValueErrorTypeError 如果异常涉及参数的值或类型;

  • 不要打印错误消息。使用有意义的错误消息引发有意义的异常:

    raise ValueError("password must be longer than 6 characters")
  • 从 setter 返回一个值是没有意义的,而赋值不是一个表达式,即你不能检查赋值的值:

    if (user.password = 'short'): ...
  • 只需在 setter 中引发异常,然后让设置属性的代码处理它。

例子:

class Test:

minlen = 6

@property
def password(self):
return self._password

@password.setter
def password(self, value):
if not isinstance(value, basestring):
raise TypeError("password must be a string")
if len(value) < self.minlen:
raise ValueError("password must be at least %d character len" % \
self.minlen)
self._password = value

另请查看 this forms handling library ,那里有验证器,here an example , 是它们自己的实体:它们可以通过更高的控制和更少的耦合代码动态设置,但这可能比您需要的要多得多。

关于python - 在 Python 中设置变量时引发错误的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2525845/

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