클래스안에 넣기는 크기가 큰 변수를 써야할 일이 생겼는데
인스턴스를 여려개 생성하면 좀 부담스러울 듯 싶었다.
전역으로 선언하고 쓰면 그만이지만 클래스의 멤버 처럼 사용하고 싶었다.
C나 C++ 에서 사용하듯 전역으로 선언해 놓고 클래스에 이 변수를 접근하는 get/set 메소드를 만들어 사용하려고 하는데
get 메소드가 리턴한 값이 과연 전역변수 자체일지 새로운 변수가 생성되는 것일지 궁금했다.
==============================
코드
array = []
def test_step1():
global array
print( "global array in function : %d" % id( array ) )
return array
if __name__=="__main__":
print( "global array : %d" % id( array ) )
returned_array = test_step1()
print( "returned array : %d" % id( returned_array ) )
결과
global array : 1987484008
global array in function : 1987484008
returned array : 1987484008
==============================
==============================
결과
Traceback (most recent call last):
File "global_test.py", line 16, in <module>
test_var = test.get_var()
File "global_test.py", line 9, in get_var
return self.some_var
AttributeError: 'Some' object has no attribute 'some_var'
==============================
==============================
새로운 방법
==============================
some_var = []
class Some:
def get_var( self ):
global some_var
return some_var
if __name__=="__main__":
test = Some()
test_var = test.get_var()
print( "id( some_var ) : %d" % id( some_var ) )
print( "id( test_var ) : %d" % id( test_var ) )
결과
id( some_var ) : 1987869672
id( test_var ) : 1987869672
==============================
'프로그래밍 > 언어_스크립트' 카테고리의 다른 글
[PyQt] QTableView 사용하기 (0) | 2014.12.06 |
---|---|
[PyQt] QtDesigner로 생성한 클래스 사용하기 (0) | 2014.11.28 |
[파이썬] 리스트 인자 버그 (0) | 2014.06.20 |
[C/C++] signed 형과 unsigned 형의 비교 (0) | 2014.02.24 |
C 함수 C++ 에서 사용하기 (0) | 2013.11.24 |