这个问题听起来有点怪异,但是到目前为止,我一直找不到答案,所以我决定在这里提问:
是否有一种方法可以从类的所有实例中调用方法,而不必手动遍历每个实例?
通常,我会这样做:
instList = []
class SomeClass:
def __init__(self,*args,**kwargs):
#init stuff
instList.append(self)
def theThing(self):
#do the thing
def allTheThings(il):
for inst in il:
inst.theThing()
allTheThings(instList)
这通常可以正常工作,但是效率不是很高。有什么方法可以将其简化为一两行代码?
类似这样的东西:
class SomeClass:
def __init__(self,*args,**kwargs):
#init stuff
def theThing(self):
#do the thing
SomeClass.instances.theThing()
或者这个:
class SomeClass:
def __init__(self,*args,**kwargs):
#init stuff
def theThing(self):
#do the thing
instancesOf(SomeClass).theThing()
这真的很有帮助,因为我计划以多种不同方式使用它:在游戏结束时自动杀死所有内容,检测单击的各种多边形按钮,以及涉及在一堆中调用单个方法的任何事情实例。