Python: как сделать атрибут объекта ссылкой на вызов методом

Я бы хотел, чтобы вызов атрибута типа object.x возвращал результаты некоторого метода, например object.other.other_method() . Как я могу это сделать?

Редактирование: я спросил немного скоро: похоже, я могу сделать это с помощью

 object.__dict__['x']=object.other.other_method() 

Это хороший способ сделать это?

  • Динамические атрибуты экземпляра
  • поиск элементов по атрибуту с помощью lxml
  • Python matplotlib уменьшает размер ярлыков цвета
  • Инициализация / объявление атрибутов в классе Python: куда их поместить?
  • Почему добавление атрибутов к уже созданному объекту разрешено?
  • правильный способ определения переменных класса в Python
  • В объекте класса, как автоматически обновлять атрибуты?
  • Атрибуты объекта Python - методология доступа
  • 4 Solutions collect form web for “Python: как сделать атрибут объекта ссылкой на вызов методом”

    Используйте декоратор свойств

     class Test(object): # make sure you inherit from object @property def x(self): return 4 p = Test() px # returns 4 

    Сбрасывание с __dict__ является грязным, особенно когда доступно свойство @property.

    Посмотрите на встроенную функцию свойств .

    Использовать property

    http://docs.python.org/library/functions.html#property

     class MyClass(object): def __init__(self, x): self._x = x def get_x(self): print "in get_x: do something here" return self._x def set_x(self, x): print "in set_x: do something" self._x = x x = property(get_x, set_x) if __name__ == '__main__': m = MyClass(10) # getting x print 'mx is %s' % mx # setting x mx = 5 # getting new x print 'mx is %s' % mx 

    Это вызовет только один other_method когда он будет создан

     object.__dict__['x']=object.other.other_method() 

    Вместо этого вы могли бы это сделать

     object.x = property(object.other.other_method) 

    Какой other_method каждый раз, object.x обращается к object.x

    Конечно, вы не используете object в качестве имени переменной, не так ли?

    Python - лучший язык программирования в мире.