我已经定义了一个课程(里面的内容对问题没用):
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实例,并使用它来检查相等性。
但是我仍然想知道如何在不创建无用实例的情况下继续进行,因为我真的想避免这种情况。
某种东西,比如类型(对象)==(类名)。
我该怎么办?
答案 0 :(得分:3)
您应该使用if isinstance(someinstance, AllyInstance)
。
顺便说一下,将“实例”这个词放在类名中并不是一个好主意。
答案 1 :(得分:3)
if isinstance(foo, AllyInstance):
了解更多信息:python doc