Давайте рассмотрим простой класс в качестве примера:Перенаправление переменная класса для функции класса
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
. Есть ли способ скрыть тот факт, что класс фактически вызывает функцию при запросе переменной?
Заранее спасибо.
Как примечание стороны, «класс переменной» и «функции класса» являются _highly_ в заблуждение названия, потому что почти каждый будет принимать их в качестве синонимов для «атрибута класса» и «метод класса», а не «атрибут экземпляра» и «метод экземпляра». – abarnert
Вектор не должен иметь атрибут 'sum' ... Почему вы хотите сделать его атрибутом вместо метода? – 2013-05-12 12:42:39
@MarkusMeskanen - он может сделать определенный код более аккуратным и понятным, особенно в математике (хотя я бы не советовал использовать его). 'numpy' делает это для класса' matrix' (transpose is '.T', inverse is' .I' и т. д.) – sapi