2013-03-31 2 views
0

여기에 현재 다루고있는 시나리오가 있습니다.
서비스라는 클래스가 있습니다. 기본적으로 노드의 단일 객체 만 만들 수 있습니다. 이 객체가 생성되면 한 노드에서 다른 노드로 전달됩니다.파이썬에서이 액세스 지정자 보호를 어떻게 제공 할 수 있습니까?

Class Service: 
int valueOfA=0; 
int valueOfB=0; 
int valueOfC=0; 
int valueOfD=0; 

이제 A는이 클래스의 객체 obj를 인스턴스화합니다. 이제 A는 증가 할 수 있어야 만

obj.valueOfA++ 

마찬가지로 B 만

obj.valueOfB++ 

를 증가 할 수 있어야하지만, 노드는 여기에서 각 노드에 의해 식별되는 또는 B 혹은 C의 값을 읽을 수있다 그것의 IP 주소. 의미 노드 A에는 별도의 IP 주소가 있고, 노드 B에는 별도의 IP 주소가 있습니다.

어떻게 이런 식으로 파이썬에서 구현할 수 있습니까?

답변

1

파이썬에는 public 또는 private과 같은 자동 액세스 지정자 보호 기능이 없습니다. 그러나 당신은 항상 방법을 사용하여 논리를 구현할 수 있습니다.

def incrementA(self, node): 
    if node.name == "Node A": self.valueOfA += 1 
    else: raise ValueError("node is not authorized to increment A") 

는 또한, 파이썬은 더 ++ 운영자가 없습니다 : 같은 작업을 수행합니다. 증가하려면 +=을 사용해야합니다.

+0

감사합니다. 이것은 Python으로 프로그래밍 한 최초의 일이며 파이썬에 그러한 마법이 있는지를 확인하려고했습니다. –