나는 자바에서 파이썬으로 이동하고있다. Java에서 정적 변수는 동일한 클래스의 다른 객체에 의해 변경 되더라도 클래스의 모든 객체에 동일한 값을 반환합니다. 필자는 독서중인 Python 책에서 데이터 멤버는 클래스 정의의 직접적인 범위 내에서 할당이 수행되면 클래스 네임 스페이스에 입력된다고 말합니다.클래스 변수를 사용하는이 코드가 Java에서와 같이 작동하지 않는 이유는 무엇입니까?
내가 IDLE을 사용하고, 아래의 파이썬 인터프리터, 그리고 파이썬 코드 :
class ABC:
OVRLIMIT_FEE=5
>>> a=ABC()
>>> b=ABC()
>>> a.OVRLIMIT_FEE+=1
>>> a.OVRLIMIT_FEE
6
>>> b.OVRLIMIT_FEE
5
그러나 클래스의 네임 스페이스를 입력하면, 그렇지 그것이 모두에 액세스 할 때 같은 값을 반환해야합니다 b?
,이 문제는 그것에 전혀 관련이 – SomeJavaGuy
당신이 객체가 ABC의 속성을하지 특성 변화, 할'ABC.OVRLIMIT_FEE + = 1' 당신은 얻을 것이다 6 for both – dnit13
'a.OVRLIMIT_FEE' ('a.OVRLIMIT_FEE + = 1'에서했던 것처럼)에 할당하면'a'에 인스턴스 변수를 생성하게됩니다. 클래스 변수에 접근하려면'ABC.OVRLIMIT_FEE'를 사용하십시오. – khelwood