강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

파이썬기초54 : 클래스 외부에서 클래스내부 멤버변수와 멤버메서드 사용

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문


# 클래스 외부에서 클래스내부 멤버변수와 멤버메서드 사용


# private 멤버 속성: 앞의 CounterManager클래스에서 멤버 변수 insCount는 중요한 변수임에도 불구하고 파이썬에서 기본적으로 public속성을 갖기 때문에 클래스의 외부에서 접근하거나 변경할 수 있다. 그래서 파이썬에서는 이름 변경(Naming Mangling)으로 문제를 해결했다. 즉 클래스 내의 멤버 변수나 함수를 정의할 때 ‘__’로 시작하는 경우 클래스 외부에서 참조할 때 자동적으로 ‘_클래스이름__멤버이름’으로 변경된다.  

# 변수나 메서드의 이름 앞에 _를 붙인다. 이 경우 해당 클래스 안에서만 사용한다는 규칙이 있다(관례적인 부분)

# 변수나 메서드의 이름 앞에 __를 붙인다. 이 경우 _클래스명__속성명으로 변경해준다. 


# 예약어에 속하는 식별자

# _* : 모듈(파일)안에서 _로 시작하는 식별자를 정의하면 내부에서만 사용한다는 관례가 있다. 하지만 접근이 된다. 

# __*__ : 식별자의 앞뒤에 __가 붙어 있는 식별자는 시스템에서 정의한 이름이다. 다시 말해 언어 수준에서 준비된 기능을 구현하기 위해 사용되는 이름이다.

# __* : 클래스 안에서 외부로 노출되지 않는 식별자로 인식된다. 이름변경(Naming Mangling)을 통해 접근하기 힘들게 만든다.    



#__가 붙은 멤버는 _클래스명__속성명으로 이름변경이 된다.

class BankAccount:

    def __init__(self, id, name, balance):

        self.__id = id

        self.__name = name 

        self.__balance = balance 

    def deposit(self, amount):

    self.__balance += amount 

    def withdraw(self, amount):

     self.__balance -= amount

    def __str__(self):

     return "{0}, {1}, {2}".format(self.__id, self.__name, self.__balance)

    


#인스턴스 객체를 생성

account1 = BankAccount(100, "전우치", 15000)

account1.withdraw(3000)

print(account1)


#클래스 외부에서는 아래와 같이 접근 

BankAccount._BankAccount__balance = 35000

print(BankAccount._BankAccount__balance)


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,785 개
  • 현재 접속자 :  209 명