[python] 전역변수 사용하기..
글쓴이: sadrove / 작성시간: 금, 2005/03/25 - 4:03오후
A라는 클래스가 있고요..
A클래스에는 num=1 이라는 변수가 있습니다..
그리고 호출당할때마다 num 변수를 1씩 증가시켜서 되돌려 주는 plusnum() 이 있습니다.
여기서 B라는 클래스가 A 클래스를 상속한 후에 plusnum()을 호출하면 증가된 값인 2가 나오겠죠..
그리고 C라는 클래스 역시 A를 상속했는데요..
C에서 A의 plusnum()을 호출하면 아까 증가했으니까 3이 나오도록 구현을 해야 하거든요..
파이썬에서 전역변수가 global로 선언하면 되는게 맞나요?
아래와 같이 해도 안되던데...
어찌하면.. 될까요..?
문법공부를 너무 안하고 질문하는 느낌이..-.-...
global num num = 1 class B(A): self.plustrid() print num class C(A): self.plustrid() print num class A: def plustrid(self): num += 1
Forums:
Re: [python] 전역변수 사용하기..
이렇게 하는 것이 맞습니다. 아주 간단하게 원칙을 설명하자면, 어떤 함수/메소드/클래스 안에서 =와 같은 대입문으로 값이 바뀌는(append 같은 메소드는 아닙니다) 변수가 있다면, 그 변수를 맨 처음에 global로 선언해 줘야 합니다.
어찌해서 이런 일이 일어 났나 하면, 원래 파이썬의 namespace들은 모두 사전으로 되어 있습니다. (dir() 같은 거 해 보세요.) 그런데 함수 등의 scope에 대해서도 따로 namespace를 만들려니 사전의 부하가 너무 심해서, 파이썬 바이트코드 컴파일러들은 사전을 쓰지 않고 안에서 사용되는 변수들에 간단한 숫자만을 붙여서 사용합니다. 따라서 현재 namespace 바깥에 있는 변수를 사용하려면 위와 같이 선언을 해서 숫자를 할당받아서 써야 하는 것이지요. (라고 들었...;;;)
- 토끼군
댓글 달기