【发布时间】:2019-02-17 03:17:23
【问题描述】:
我使用 try 和 except 编写了一个代码来捕获我的错误消息(我想在不使用 isinstance 的情况下编写它)并且当输入不是整数时我收到错误消息。问题是,即使输入是有效的整数,程序也会给我错误消息。请给我一些建议以使其运行。我的代码如下:
我尝试使用异常子句,但没有奏效。
class Hotel:
def __init__(self,room,catagory):
if room != int:
raise TypeError ()
self.room = room
self.catagory = catagory
self.catagories = {"A":"Elite","B":"Economy","C":"Regular"}
self.rooms = ["0","1","2","3","4","5"]
def getRoom(self):
return self.room
def getCatagory(self):
return self.catagory
return self.catagories.get(self.catagory)
def __str__(self):
return "%s and %s"%(self.rooms[self.room],self.catagories.get(self.catagory))
try:
room1 = Hotel(a,"A")
room2 = Hotel(1,"A")
print(room1.getRoom())
except:
print("there's an error")
我期待:
有错误
1 和精英
一个
【问题讨论】:
-
因为,
if room != int:始终是True。这不是您在 Python 中检查类型的方式。 -
isinstance(room, int)确实是更好的模式(如果你要使用类型检查的话),但type(room) == int可能是你要找的。 -
如果你捕捉到所有这样的错误,你也会捕捉到调试代码的所有可能性。