2013-05-12 2 views
1

Давайте рассмотрим простой класс в качестве примера:Перенаправление переменная класса для функции класса

class Vector: 
    def __init__(self): 
     self.x = 1 
     self.y = 1 
     self.z = 1 

То, что я хотел бы, чтобы дать этому классу переменную sum таким образом, что, когда я

v = Vector() 
v.sum 

Мне дается сумма x+y+z (в данном случае 3). Конечно, я могу просто просто создать метод класса, который делает это, но тогда мне пришлось бы писать v.sum() вместо v.sum. Есть ли способ скрыть тот факт, что класс фактически вызывает функцию при запросе переменной?

Заранее спасибо.

+1

Как примечание стороны, «класс переменной» и «функции класса» являются _highly_ в заблуждение названия, потому что почти каждый будет принимать их в качестве синонимов для «атрибута класса» и «метод класса», а не «атрибут экземпляра» и «метод экземпляра». – abarnert

+0

Вектор не должен иметь атрибут 'sum' ... Почему вы хотите сделать его атрибутом вместо метода? – 2013-05-12 12:42:39

+0

@MarkusMeskanen - он может сделать определенный код более аккуратным и понятным, особенно в математике (хотя я бы не советовал использовать его). 'numpy' делает это для класса' matrix' (transpose is '.T', inverse is' .I' и т. д.) – sapi

ответ