使用“属性”,我认为很容易让事情变得混乱。像下面的代码一样,我希望id
属于int
类型,但不知道Python是否允许我在没有try语句的情况下执行此操作并捕获ValueError
def getter(self):
return id
def setter(self, id):
self.id = id
如果我在那里输入'boy'
而不是1
,代码仍会运行。有没有办法消除这个?
答案 0 :(得分:5)
你可以在id:
上调用intdef setter(self, id):
self.id = int(id)
现在通过1
或"1"
会有效,但通过"boy"
会引发异常
答案 1 :(得分:1)
def setter(self, id):
if not isinstance(id, int):
raise TypeError("dude, id has to be int")
self.id = id
现在,如果有人传递了错误的输入,您应该使用try:except:
块包装分配代码并按照您的意愿处理它。