Я пробую модуль полки, и у меня возникают проблемы. Мое намерение состоит в том, чтобы один модуль вызывал функцию во втором, которая будет изменять файл внутри полки. Я сделал прототип (ниже), который просто пытается установить переменную на что-то, хранящееся на полке, и распечатать этот объект.
Когда я пытаюсь сделать это, я получаю следующую ошибку атрибута:
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'