class Getat:
def __getattr__ (self, attrname):
print ("No this attr")
def __setattr__ (self, attr, value):
self.__dict__[attr + '_usr'] = value
x = Getat()
x.name
x.age
x.name = "Max"
x.age = 21
print(x.__dict__)
print(x.name_usr, x.age_usr)
__getattr__ вызывается, когда пытаются получить значение по несуществующему атрибуту.
__setattr__ обрабатывает присваивание значений несуществующим до этого момента атрибутам.
Результа скрипта:
No this attr
No this attr
{'name_usr': 'Max', 'age_usr': 21}
Max 21