2012-12-12 1 views
-1

가능한 중복 : 파이썬에서
Why do you need explicitly have the “self” argument into a Python method?인스턴스 변수에 액세스하려면 "self"가 필요하지만 전역 변수에는 접두어가없는 이유는 무엇입니까?

는, 인스턴스 변수는 self.x를 통해 액세스해야하지만 전역 변수는 단지 x를 작성하여 읽을 수 있습니다. 어째서?

+0

@djechlin : 그것은 똑같은 질문이 아닙니다. 글로벌 변수에 대해서도 같은 원리를 따르는 것이 어떻습니까? – Casebash

답변

0

자주 묻는 질문이지만 본질적으로 : 인스턴스 충돌이나 혼동을 피하기 위해 인스턴스 또는 전역 변수에 액세스하고 있습니다.

철학은 "암시 적"보다 철저히합니다.

+0

그러면 글로벌 변수에 대해서도 동일한 원칙을 따르지 않는 이유는 무엇입니까? – Casebash

+2

문제가 인스턴스 변수와 전역 변수 사이에 혼동/이름 섀도 잉이 가능한 경우, 그 중 하나의 명명 규칙을 명시 적으로 변경하면 문제가 해결됩니다. 파이썬에서는 "전역 변수"가 흔하지는 않지만 가져온 모듈 등은 전역 네임 스페이스에 있으며 파이썬의 다른 어떤 것보다 더 일반적으로 사용되기 때문에 전역 네임 스페이스에서 물건을 호출하는 데 불편한 컨벤션이 인스턴스 변수 네임 스페이스에서 사물을 호출 할 때와 같은 고통. –

관련 문제