AttributeError: Can't get attribut *имя атрибута*
Не понимаю в чём заключается ошибка. Вот небольшой код, связанный с ООП (По типу создания базы данных):
class Employ:
def __init__(self, name=None, age=0, pay=0, job=None):
self.name = name
self.age = age
self.pay = pay
self.job = job
def __str__(self):
return ('%s\n%s ==> %s'%(self.name, self.job, self.pay))
def LastName(self):
return self.name.split()[-1]
def giveRaise(self, percent):
self.pay *= (1.0+(percent/100))
class Manager(Employ):
def __init__(self, name, age, pay):
Employ.__init__(self, name, age, pay, job='manager')
def giveRaise(self, percent, bonus=0.1):
Employ.giveRaise(self, percent + bonus)
Далее я заключаю тестовый код в инструкцию и импортирую модуль 'shelve' __name__ == '__main__':
...Employ.giveRaise(self, percent + bonus)
if __name__ == '__main__':
bob = Employ('Bob Smith', 42, 40000, 'dev')
sue = Employ('Sue Jones', 45, 50000, 'hdw')
tom = Employ('Tom Hanks', 54)
pavel = Employ('Pavel Savelev', 20, 100000, 'fsdev')
john = Manager('John Silverhand', 127, 60000)
db = shelve.open('filename')
db['bob'] = bob
db['sue'] = sue
db['tom'] = tom
db['pavel'] = pavel
db['john'] = john
print(db['bob'])
for i in db:
print(i,'==>', db[i].name, db[i].pay)
db.close()
После, когда я создаю нужный мне файл, я хочу вывести от туда некоторые значения путём:
import shelve
db = shelve.open('filename')
for key in db:
print(key, '=>\n ', db[key])
print('=='*8)
db.close()
(новый файл)
И в инструкции db[key] и в ней подобных я получаю ошибку AttributeError: Can't get attribut Employ
Однако если я импортирую классы Employ и Manager в новый модуль и в этом новом модуле напишу всё что было заключено в инструкции __name__ == '__main__':, то получать атрибуты из нового файла я смогу и не будет выходить ошибки AttributeError
Почему?