Переходное __setattr__ во время выполненияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Переходное __setattr__ во время выполнения

Сообщение Anonymous »

Я пытаюсь переопределить метод __setattr __ класса Python, так как я хочу вызывать другую функцию каждый раз, когда атрибут экземпляра меняет свое значение. Тем не менее, я не хочу этого поведения в методе __init __ < /code>, потому что во время этой инициализации я устанавливаю некоторые атрибуты, которые будут использоваться позже: < /p>

Пока у меня есть это решение, без переоценки __setattr __ < /code> при выполнении: < /p>

Код: Выделить всё

class Foo(object):
def __init__(self, a, host):
object.__setattr__(self, 'a', a)
object.__setattr__(self, 'b', b)
result = self.process(a)
for key, value in result.items():
object.__setattr__(self, key, value)

def __setattr__(self, name, value):
print(self.b) # Call to a function using self.b
object.__setattr__(self, name, value)
Однако я хотел бы избежать этого объекта .__ setattr __ (...) и переопределить __setattr __ В конце __init __ Метод:

Код: Выделить всё

class Foo(object):
def __init__(self, a, b):
self.a = a
self.b = b
result = self.process(a)
for key, value in result.items():
setattr(self, key, value)
# override self.__setattr__ here

def aux(self, name, value):
print(self.b)
object.__setattr__(self, name, value)
Я пытался с самим собой .__ dict __ ['__ setItem__'] = self.aux и объект .__ SetItem __ ['__ setItem__'] = self.aux , но ни одно из этих попыток не влияет. Я прочитал этот раздел ссылки на модель данных, но он выглядит как назначение собственного __setattr __ немного сложно.

Как можно было бы переопределить __setattr __ в конце __init __ , или, по крайней мере, иметь Pythonic, где __setattr __setttttr __settttttr __petttttttr __petttttttr> «/код» __petttttr> «/код» __pettttr __ или, по крайней мере, в том, где __setttttttttr __pettttr> или «код» __peTtttr. Конструктор?

Подробнее здесь: https://stackoverflow.com/questions/164 ... at-runtime
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Переходное __setattr__ во время выполнения
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Переходное window.alert (), похоже, не работает [дублировать]
    Anonymous » » в форуме Javascript
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Переходное CSS div внутри #теневого корня
    Anonymous » » в форуме Html
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Переходное CSS div внутри #теневого корня
    Anonymous » » в форуме CSS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Переходное потоки Python.thread.run ()
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»