AttributeError при использовании setattr () - PullRequest
0 голосов
/ 09 июля 2020

Следующее вызывает AttributeError: 'objval' object has no attribute 'testitem'

class objval(object):
    def __init__(self):
        self.testitem = 1
    def __setattr__(self, key, value):
        print('setattr: ' + str(key) + '=' + str(value))

testobj = objval()
print(testobj.testitem)

Все, хотя при удалении def __setattr__(self, key, value): печать testobj.testitem теперь корректно выводит значение.

1 Ответ

3 голосов
/ 09 июля 2020

Вы переопределяете метод setattr вашего объекта класса. Вот так он работает и выставляет ваш атрибут. Я просто добавил супер-метод, чтобы позволить вашему объекту выполнить исходный метод setattr после ваших изменений:

class objval(object):
    def __init__(self):
        self.testitem = 1

    def __setattr__(self, key, value):
        print('setattr: ' + str(key) + '=' + str(value))
        super(objval, self).__setattr__(key, value)

testobj = objval()
print(testobj.testitem)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...