Python:询问两个对象是否是同一个类

Car*_*ano 10 python polymorphism instance

我有一类动物和其他动物从它继承(eq Sheep,Wolf).
我想检查两个对象是否是同一个类,如果是,它应该创建同一个类的新对象,如果不是,它们就是在战斗.

if x and y same object:
    #create new object
else:
    #fight
Run Code Online (Sandbox Code Playgroud)

有没有比这更好的方法isinstance
因为,会有更多的动物而不仅仅是2,我认为这样做效率不高:

if isinstance(x, Wolf)
    # ...
Run Code Online (Sandbox Code Playgroud)

Mar*_*ler 14

你可以简单地使用

if type(x) == type(y):
    fight()
Run Code Online (Sandbox Code Playgroud)

Python有一个类型系统,可以让你做到这一点.

编辑:正如Martijn所指出的那样,因为类型只在每个运行时存在一次,所以你可以使用is而不是==:

if type(x) is type(y):
    fight()
Run Code Online (Sandbox Code Playgroud)

  • 类是单例,因此使用`type(x)是类型(y)`会更有效. (3认同)