shelve モジュールを試していますが、問題が発生しています。私の意図は、シェルブ内のファイルを変更する 1 つのモジュールが 2 番目のモジュールで関数を呼び出すようにすることです。棚に格納されているものに変数を設定し、そのオブジェクトを出力するだけのプロトタイプ (以下) を作成しました。
これを行おうとすると、次の属性エラーが発生します。
AttributeError: 'module' object has no attribute 'User'
私の推測では、「ユーザー」クラスが存在することに気付いていませんが、その理由はわかりません。File1 は File2 がメイン関数で行うのと同じ関数を呼び出し、そのインスタンスで正しく動作します。この問題について何か助けていただければ幸いです。問題が何であるかについて混乱しています。
import SE_ex2
SE_ex2.cacheTest()
import shelve
cache_users = shelve.open("usersTest.cache")
class User(object):
def __init__(self, name, num):
self.name = name
self.num = num
def __str__(self):
return "Name:{0}, Num={1}".format(self.name, self.num)
def cacheTest():
obj = cache_users[ "user_red" ]
print obj
if __name__ == "__main__":
cacheTest()
#Used for creating the cache for the first time
# red = User("red", 11)
# green = User("green", 22)
# blue = User("blue", 33)
#
# cache_users['user_red'] = red
# cache_users['user_green'] = green
# cache_users['user_blue'] = blue
# print "DONE"
完全なトレースバック:
Traceback (most recent call last):
File "C:\Users\akaGrim\My Documents\Aptana Studio 3 Workspace\ShelveTest\SE_ex1.py", line 3, in <module>
SE_ex2.cacheTest()
File "C:\Users\akaGrim\My Documents\Aptana Studio 3 Workspace\ShelveTest\SE_ex2.py", line 14, in cacheTest
obj = cache_users[ "user_red" ]
File "C:\Python27\lib\shelve.py", line 122, in __getitem__
value = Unpickler(f).load()
AttributeError: 'module' object has no attribute 'User'