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

Почему?


Ответы (0 шт):