1
여러 번 실행되는 메서드가 있습니다. 내부에 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은 대답을 표시하지 않습니다 : (
길 파이썬입니다 private 멤버를 처리합니다. –
파이썬에는 "private member"와 같은 것이 없습니다. 할 수있는 일은 강력한 힌트를 제공하는 것입니다. 아무렇지도 않게 조작해서는 안된다. –