У меня есть метод, который запускается много раз.Я не хочу вкладывать ifs внутрь, а хочу перезаписать метод, а затем запустить его.Я знаю, что могу переписать метод класса простым назначением, но перезаписанный метод не видит закрытые члены:
class X:
def __init__(self, a):
self.a = a
self.__b = a
def m(self):
print self.a
print self.__b
def a2(self):
print (2*self.a)
print (2*self.__b)
x = X(2)
x.m()
X.m = a2
x.m()
вывод:
2
2
4
Traceback (most recent call last):
File "t.py", line 17, in <module>
x.m()
File "t.py", line 12, in a2
print (2*self.__b)
AttributeError: X instance has no attribute '__b'
Есть ли шанс решить эту проблему?Google не показывает ответ: (