属性,类型和Python

时间:2013-09-16 15:29:41

标签: python

使用“属性”,我认为很容易让事情变得混乱。像下面的代码一样,我希望id属于int类型,但不知道Python是否允许我在没有try语句的情况下执行此操作并捕获ValueError

def getter(self):
    return id

def setter(self, id):
    self.id = id

如果我在那里输入'boy'而不是1,代码仍会运行。有没有办法消除这个?

2 个答案:

答案 0 :(得分:5)

你可以在id:

上调用int
def 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:块包装分配代码并按照您的意愿处理它。