Nea*_*ers 2 python google-app-engine loops
如何遍历内存中加载的所有类的列表?我正在考虑做备份,寻找从db.Model(Google App Engine)继承的所有类.
谢谢,Neal Walters
在"普通"Python中,您可以通过标准库模块的gc.getobjects()
功能访问所有对象gc
; 它是那么很容易对他们的循环,检查哪一个是类(而不是实例或别的-我相信你的意思实例类,但你可以很轻松地让自己过,如果这真的是你想要什么类),等等
不幸的是,gc
App Engine中的模块没有实现getobjects
- 这使得到达所有类非常困难.例如,通过调用创建的类:
def makeaclass():
class sic(object): pass
return sic
Run Code Online (Sandbox Code Playgroud)
并隐藏在某个地方的列表中,很难达到.
但幸运的是,既然你在问题的文本中说你只关心子类db.Model
,那就更容易了gc
:
for amodel in db.Model.__subclasses__():
...
Run Code Online (Sandbox Code Playgroud)
只需确保明确忽略您不关心的类,例如Expando
;-).
请注意,这个DOES只提供了CLASSES,而不是实例 - 如果那些是您真正想要的,那么没有类似的简单快捷方式!