这个问题可能听起来有点奇怪,但到目前为止我一直找不到答案,我决定在这里问:
有没有办法从类的所有实例调用方法而不必手动遍历每个单个实例?
通常,我会做这样的事情:
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()
这将非常有用,因为我打算以多种不同的方式使用它:在游戏结束时自动查杀所有内容,检测被点击的各种多边形按钮,任何涉及在一堆实例上调用单个方法的内容。
发布于 2018-09-19 10:36:39
你通常不会在Python中使用列表推导出错。它们简洁,易读,而且非常快捷
[inst.theThing() for inst in instList]
https://stackoverflow.com/questions/-100006138
复制相似问题