Python - повторная реализация __setattr__ с супер

Я знаю, что этот был рассмотрен ранее, и, возможно, это не самый питонический способ создания класса, но у меня есть много разных классов узлов майя с большим количеством @properties для извлечения / установки данных узла, и я хочу увидеть если процедурное построение атрибутов сокращает накладные расходы / обслуживание.

Мне нужно повторно реализовать __setattr__, чтобы сохранить стандартное поведение, но для определенных специальных атрибутов значение get / set для внешнего объекта.

Я видел примеры повторной реализации __setattr__ при переполнении стека, но мне, кажется, что-то не хватает.

Я не думаю, что я поддерживаю функциональность по умолчаниюSetAttr

Вот пример:

externalData = {'translateX':1.0,'translateY':1.0,'translateZ':1.0}
attrKeys = ['translateX','translateY','translateZ']


class Transform(object):

    def __getattribute__(self, name):
        print 'Getting --->', name
        if name in attrKeys:
            return externalData[name]
        else:
            raise AttributeError("No attribute named [%s]" %name)

    def __setattr__(self, name, value):
        print 'Setting --->', name
        super(Transform, self).__setattr__(name, value)
        if name in attrKeys:
            externalData[name] = value


myInstance = Transform()
myInstance.translateX
# Result: 1.0 # 
myInstance.translateX = 9999
myInstance.translateX
# Result: 9999 # 
myInstance.name = 'myName'
myInstance.name
# AttributeError: No attribute named [name] #

!

Ответы на вопрос(4)

Ваш ответ на вопрос