私は次のものを持っています:
- オブジェクト
- __init__.py
- define.py
define.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
れます。