2014-10-12 4 views
-2

Python에서는 해당 클래스의 모든 인스턴스 (객체)에 대해 동일한 클래스의 정적 속성을 만들 수 있습니까? 그들은 모두 자신의 속성을 만들지 않고 해당 속성에 동일한 참조를 사용합니다. 예를 들어Python 정적 클래스 속성

:

class myClass: 
    __a = 0 

    def __init__(self, b, c): 
     self.b = b 
     self.c = c 

    def increase_A(self): 
     self.__a += 1 
     return 

    def get_A(self): 
     return self.__a 

내가

myObject1 = myClass(1,2) 
myObject2 = myClass(3,4) 

myObject2.increase_A() 

print myObject1.get_A() 

하나제로이 나오긴들이 동일한 변수를 공유하지 표시됩니다이 그렇다면?

+0

시도하면 어떻게됩니까? – NPE

답변

3

코드가 의도 한 것처럼 작동하게하려면 self.__a 대신 myClass.__a을 사용하여 변수에 액세스하십시오.

def increase_A(self): 
    myClass.__a += 1 
    return 

def get_A(self): 
    return myClass.__a 
3

그들은 같은 변수로 시작합니다. 그러나

self.__a += 1 

을 수행 할 때이 리 바인드 객체의 __a 값이 1을하는 새로운 객체.

다른 개체의 __a은 변경되지 않으므로 코드는 0으로 인쇄됩니다.