이름 앞에 _(밑줄)쳐져 있는 객체는 뭔가요?
조회수 3125회
1 답변
-
_
: 클래스 안에서_이름
과 같이 쓰는 것은 프로그래머에게attribute
나method
가private
임을 알려주기 위한 용도입니다.import *
했을 때 이름이_
로 시작하는object
는 import 되지 않지요. 그 외에는 별 다른 기능은 없습니다.__
(Name Mangling):이름이 두 개 이상의 밑줄로 시작하는
identifier
는_classname__spam
형태로 바뀝니다. 그래서 보통class-private
인스턴스나 class 변수, method, 전역 변수 등을 정의하는데 쓰이지요.다만 주의할 점은 이런 mangling은 우연히 private에 접근하는 것을 막아주는 역을 할 뿐, 마음먹으면
private
에 접근/수정하는 건 여전히 가능합니다.class foo(): def __init__(self): self.__myPrivateInt = 3 def printPrivate(self): print(self.__myPrivateInt) myfoo = foo() #print myfoo.__myPrivateInt #직접 접근 -> 에러 mydict = myfoo.__dict__ mydict['_foo__myPrivateInt'] = 4 #__myPrivateInt 바뀜 myfoo.printPrivate()
결과 :
4
댓글 입력