У меня есть класс, который с помощью разных методов создает значения для 2 разных атрибутов. Затем я хотел бы манипулировать этими значениями атрибутов, если это необходимо, с помощью другого метода экземпляра.
class Test:
def __init__(self):
self.a = self.b = None
pass
def make_a(self, a):
// put 'a' through some process
self.a = a
return self
def make_b(self, b):
// put 'b' through some process
self.b = b
return self
def change_attr(self):
// some change
Я хотел бы иметь возможность вызвать change_attr
на make_a
или make_b
, чтобы изменить значение либо a
, либо b
, как требуется. Что-то вроде Test().make_a(3).change_attr()
... затем доступ к a
в экземпляре после факта.
НО Я не знаю, как настроить change_attr
или класс в целом, чтобы он "знал", что Метод экземпляра был только что вызван перед этим.
Чтобы вызвать change_attr
для других методов, у меня есть эти методы, возвращающие self, но тогда change_attr
не может знать, какой атрибут изменить.
Декоратор чувствует себя уместно, но его нужно включать и выключать, и я видел только примеры этого как метод класса (например, здесь ). Как только я начинаю пытаться обойти self
, идея рушится.
Я задаюсь вопросом, является ли декоратор подходящим подходом здесь. Или, если возможно, я могу как-то вызвать метод экземпляра для атрибута экземпляра (сомнение возможно) ...
test = Test()
test.make_a(5)
test.a.change_attr()
Или, если change_attr
можно как-то сказать, какой метод вызывался раньше (также сомневаюсь, что это возможно).
Пока у меня несколько неуклюжий подход, когда параметр передается в change_attr
, который сообщает методу, какой атрибут изменить.
def change_attr(self, attr_to_change):
if attr_to_change == 'a':
// make change to a
elif attr_to_change == 'b':
// make change to b
Я ценю любые ввод!