在Python3.7中使用try和except代替isinstance

在Python3.7中使用try和except代替isinstance,python,try-catch,except,Python,Try Catch,Except,我编写了一段代码,使用try和,捕获错误消息,但我不想在不使用isinstance的情况下编写它,并且当输入不是整数时,我会得到错误消息。问题是,即使输入是有效的整数,程序也会给我错误消息。请给我一些建议让它运行。我的代码如下: 我试着使用exception子句,但不起作用 class Hotel: def __init__(self,room,catagory): if room != int: raise TypeError ()

我编写了一段代码,使用try和,捕获错误消息,但我不想在不使用isinstance的情况下编写它,并且当输入不是整数时,我会得到错误消息。问题是,即使输入是有效的整数,程序也会给我错误消息。请给我一些建议让它运行。我的代码如下:

我试着使用exception子句,但不起作用

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和精英

A

您正在检查是否有房间!=int。它总是会给你错误

你必须检查打字室!=int。 我已经更正了下面的代码

class Hotel:
    def __init__(self,room,catagory):
        if type(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"]

因为,如果有房间!=int:这总是正确的。这不是在Python.isinstanceroom中检查类型的方式,如果要使用类型检查,int确实是更好的模式,但是typeroom==int可能是您要寻找的。如果您捕获了所有类似的错误,您还将捕获所有调试代码的可能性。