我有以下内容:
- 对象
- __init__.py
- 定义.py
定义.py:
class Place:
def __init__(self,name,inhabitants):
self.name=name
self.inhabitants=inhabitants
myFunction.toStoreThings.on.db(name,inhabitants,'places')
def someUsefulFunction(self):
pass
如果我运行import objects
, moon=objects.Place('Moon',[])
,请关闭解释器并再次打开它。我显然丢失了moon
实例,但我已经(u'Moon',u'[]')
存储在数据库中。我已经__init__.py
从数据库和unstring
它中检索了该信息,但我也希望它实例化'Moon'
以便Moon=Place('Moon',[])
我可以使用Moon.someUsefulFunction()
,objects.Moon.someUsefulFunction()
甚至在我关闭解释器之后。我怎样才能做到这一点?
我能够这样做:
__init__.py:
# myFunction() creates a dictionary `objdic` of the stuff in the database
# >>>objects.objdic
# {'places' : [['Moon',[]]]}
instancesdic={}
instancesdic['places']={}
instancesdic['places'][objdic['places'][0][0]]=Place(*objdic['places'][0])
这使
>>> objects.instancesdic
{'places': {'Moon': <objects.Place instance at 0x1b29248>}}
这样我可以使用
objects.instancesdic['places']['Moon'].someUsefulFunction()
没关系,但我真的很想要objects.Moon.someUsefulFunction()
。任何尝试调用整个事物Moon
都会导致:
TypeError: 'str' object does not support item assignment
或者只是将字典中的键更改为实例,而不是Moon
创建实例。