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