>백엔드 개발 >파이썬 튜토리얼 >변수 범위는 Python 클래스에서 어떻게 작동합니까?

변수 범위는 Python 클래스에서 어떻게 작동합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-17 21:58:01894검색

How Do Variable Scopes Work in Python Classes?

Python 클래스의 변수 범위 이해

Python 클래스에서 변수를 선언하는 것은 처음에는 혼란스러울 수 있습니다. 이 문서의 목적은 클래스 컨텍스트의 변수 선언과 관련된 다양한 범위와 미묘한 차이를 명확히 하는 것입니다.

일반 범위 규칙:

  • 클래스 변수: 클래스 내에서 외부 함수로 선언된 변수는 모든 클래스 함수에서 접근 가능합니다.
  • 로컬 변수: 클래스 내에서 함수 내부에서 선언된 변수는 해당 함수 내에서만 접근 가능합니다.
  • 인스턴스 변수: 클래스 내의 함수 내에서 self.(변수 이름)을 사용하여 선언된 이 변수는 모든 클래스 함수에 액세스할 수 있습니다.

인스턴스 변수 대 전역 변수:

인스턴스 변수(self.(변수 이름)를 사용하여 선언됨)는 전역 변수(함수 또는 클래스 외부에서 선언됨)와 다르게 동작합니다. 클래스 내에서 선언된 모든 것은 기술적으로 공개되지만 인스턴스 변수는 개별 개체 인스턴스에 바인딩됩니다.

예:

class Test:
    a = None  # Class variable
    b = None  # Class variable

    def __init__(self, a):
        self.a = a  # Instance variable

이 예에서 클래스 변수는 a와 b는 모든 클래스 함수에 액세스할 수 있습니다. 그러나 인스턴스 변수 self.a는 각 객체 인스턴스에 따라 다릅니다. __init__에서 self.a를 설정해도 클래스 변수 a에 영향을 미치지 않습니다.

보호된 변수:

Python은 개인 변수 또는 보호 변수를 명시적으로 정의하지 않지만 접두사가 붙은 변수 밑줄(_)은 보호된 것으로 간주됩니다. 기술적으로는 클래스 외부에서도 액세스할 수 있지만 이름을 변경하면 액세스가 방해됩니다.

개인 변수:

앞에 이중 밑줄(__)이 붙은 변수는 비공개로 간주됩니다. 클래스 외부에서 직접 접근하기 어렵도록 이름이 엉망입니다.

추가 뉘앙스:

  • 변수는 로컬 함수 내에 할당되었지만 self 외부에 할당되었습니다.( 변수 이름)은 해당 함수 외부에서 사용할 수 없습니다.
  • 맹글 방지 보호 및 전용 변수는 클래스 외부에서 완전히 액세스할 수 없는 것은 아니지만 진정한 캡슐화를 위해 의존해서는 안 됩니다.

위 내용은 변수 범위는 Python 클래스에서 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.