在设置对象的属性时是否有一个经验法则可以用于捕获错误?例如,假设您有一个 Shape 类,如下所示:
class Shape():
def __init__(self, size):
self.size = size
我可以执行以下操作:
>>> s = 形状(3)
>>> 大小
3
>>> s.size = "你好"
>>> 大小
'你好'
但是如果属性必须是数字呢?在这种情况下如何捕获 TypeErrors?我是否在init定义中放置了 try/except ?这是我的猜测:
class Shape():
def __init__(self, size):
try:
float(size)
self.size = size
except:
raise TypeError, "Value must be numeric"
这将在初始化时捕获错误,但在设置属性时不会。当用户尝试 s.size = "hello" 时,如何捕获 TypeError ?
谢谢!
我尝试实施下面的答案,但没有奏效:
class Shape():
def __init(self, size):
self.size = size
@property
def size(self):
return self._size
@size.setter
def size(self, value):
self._size = float(value)
我收到以下错误消息:
Traceback(最近一次调用最后一次):文件“python_playground.py”,第 18 行,在
print s.size File "python_playground.py", line 9, in size return self._size AttributeError: Shape instance has no attribute '_size'