Python 2:如何使用创建的类检查类型相等? (不在对象之间)

时间:2015-02-16 01:16:31

标签: python class python-2.7 types equality

我已经定义了一个课程(里面的内容对问题没用):

class AllyInstance(dict):    
    def __init__(self,name,pyset,number,gender='none'):
        for dicopoke_loop_enemy in dicopoke[name]:
            self[dicopoke_loop_enemy]=dicopoke[name][dicopoke_loop_enemy]
        self['set']=pyset
        self['status']='Normal'
        self['hp']=pyset['stats']['hp']
        self['boosts']={'atk':0,'def':0,'spa':0,'spd':0,'spe':0}
        self['secondarystatuses']=[] #leech seed, confusion ...
        self['gender']=gender
        self['name']=name
        self['number']=number

我创建了一个类的实例:

someinstance=AllyInstance( - include here the stuff to enter which is rather long - )

之后,我想测试某个实例的类型是否是AllyInstance - 我的班级。但

type(someinstance)==AllyInstance

产生假。

这可能是因为要求类型(someinstance)产生:

__main__.AllyInstance

所以,我试试

type(someinstance)==__main__.AllyInstance

它产生假。 (如果要求__ main __毫无意义,我不知道,我是初学者)

根据How to check class equality in Python 2.5?,我可以简单地创建一个无用的AllyInstance实例,并使用它来检查相等性。

但是我仍然想知道如何在不创建无用实例的情况下继续进行,因为我真的想避免这种情况。

某种东西,比如类型(对象)==(类名)。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

您应该使用if isinstance(someinstance, AllyInstance)

顺便说一下,将“实例”这个词放在类名中并不是一个好主意。

答案 1 :(得分:3)

if isinstance(foo, AllyInstance):

了解更多信息:python doc