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

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

Patricia Arquette
Patricia Arquette원래의
2024-11-19 08:13:02429검색

How do variable scopes work within Python classes?

Python 클래스의 변수 범위

범위 변형

Python 클래스에서는 변수 범위가 다양합니다. 선언된 위치에 따라:

  • 클래스 수준 변수(외부 함수): 모든 클래스 함수(공용 변수)에 액세스 가능.
  • 함수-지역 변수(클래스 함수 내부): 해당 특정 함수(해당 범위 내)로 제한됩니다.

자체 대 전역 변수

클래스 함수 내에서 self.(변수 이름)로 변수를 선언하면 모든 클래스 함수에 액세스할 수도 있습니다. 그러나 전역 변수와 달리 이러한 변수는 현재 인스턴스에만 적용되며 클래스 수준 변수를 재정의하지 않습니다.

추가 뉘앙스

  • Single vs. 이중 밑줄 접두사: 단일 밑줄로 시작하는 변수(예: _variable)는 보호된 것으로 간주되며 클래스 내에서만 액세스해야 합니다. 이중 밑줄로 시작하는 변수(예: __variable)는 맹글링되어 사실상 비공개입니다.
  • 로컬 변수: 클래스 함수 내에서 선언된 변수는 해당 함수에 대해 로컬이며 클래스 범위에 영향을 주지 않습니다.

다음 클래스를 고려하세요.

class Test:
    a = None
    b = None

    def __init__(self, a):
        print(self.a)
        self.a = a
        self._x = 123
        self.__y = 123
        b = 'meow'
  • a와 b는 모든 클래스에서 액세스할 수 있는 클래스 수준 변수입니다. instance.
  • a는 __init__의 인스턴스별 self.a에 의해 재정의됩니다.
  • _x는 보호되며 공개 API의 일부가 아닙니다.
  • __y는 손상되고 비공개입니다.
  • b는 __init__ 내에서만 액세스할 수 있는 지역 변수입니다.

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

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