소개
객체 지향 프로그래밍 언어인 Python은 클래스 내에서 데이터를 캡슐화하는 다양한 방법을 제공합니다.
이 캡슐화의 주요 측면 중 하나는 공개, 보호 및 비공개로 분류될 수 있는 클래스 변수의 가시성입니다. 이 기사에서는 Python 클래스에서 공개, 비공개 및 보호 변수를 정의하는 방법을 살펴보겠습니다.
이러한 변수의 동작은 다른 프로그래밍 언어와는 전혀 다릅니다. 이러한 액세스 제어는 실제로 객체를 숨기는 것이 아니라 Python의 명명 규칙일 뿐입니다.
1. 공개변수
공개 변수는 가장 접근하기 쉬운 변수 유형입니다. 수업 내부와 외부 어디에서나 액세스할 수 있습니다. Python에서는 별도로 명시적으로 정의하지 않는 한 모든 클래스 변수가 기본적으로 공개됩니다.
예:
class MyClass: def __init__(self, name): self.name = name # Public variable obj = MyClass("John") print(obj.name) # Accessible outside the class #Output : John
이 예에서 name은 공개 변수입니다. 수업 외부에서도 아무런 제한 없이 접근 및 수정이 가능합니다.
2. 보호변수
보호된 변수는 클래스와 해당 하위 클래스 내에서만 액세스할 수 있습니다. Python은 엄격한 액세스 제어를 시행하지 않지만 변수가 보호된다는 것을 나타내는 규칙은 이름 앞에 단일 밑줄(_)을 붙이는 것입니다.
예:
class MyClass: def __init__(self, name, age): self._age = age # Protected variable class ChildClass(MyClass): def display(self): print(f"Age: {self._age}") # Accessible within a subclass obj = ChildClass("John", 30) obj.display() # Output: Age: 30
이 예에서 age는 보호되는 변수입니다. Python은 클래스 외부에서 직접 액세스하는 것을 방지하지 않지만 그렇게 하면 의도한 사용법에 어긋납니다.
3. 개인변수
개인 변수는 해당 변수를 정의하는 클래스 내에서만 액세스할 수 있습니다. Python은 변수 이름 앞에 이중 밑줄(__)을 붙여서 개인 변수를 나타냅니다. 이로 인해 이름 맹글링이 발생하여 클래스 외부에서 개인 변수에 액세스하기가 더 어려워집니다(불가능하지는 않음).
예:
class MyClass: def __init__(self, name, age, salary): self.__salary = salary # Private variable def display_salary(self): print(f"Salary: {self.__salary}") # Accessible within the class obj = MyClass("John", 30, 50000) obj.display_salary() # Output: Salary: 50000 # Trying to access the private variable outside the class print(obj.__salary) # Raises AttributeError
이 예에서 급여는 비공개 변수입니다. 클래스 외부에서 직접 액세스하려고 하면 Python은 AttributeError를 발생시킵니다. 그러나 이름이 변경된 버전을 사용하여 액세스할 수는 있지만 이는 권장되지 않습니다.
이름 맹글링의 예:
print(obj._MyClass__salary) # Output: 50000
이 코드 줄은 클래스 이름을 포함하도록 비공개 변수의 이름을 내부적으로 변경하여 액세스하기 어렵게 만드는 방법을 보여줍니다.
요약
- 공개 변수: 어디서나 접근 가능합니다. 밑줄은 사용하지 마세요.
- 보호된 변수: 클래스 및 해당 하위 클래스 내에서 액세스 가능합니다. 단일 밑줄(_)이 앞에 붙습니다.
- 개인 변수: 클래스 내에서만 접근 가능합니다. 앞에는 이중 밑줄(__)이 붙습니다.
Python의 액세스 제어는 엄격한 적용보다는 명명 규칙을 기반으로 하지만 이러한 규칙을 따르면 코드 명확성과 무결성을 유지하는 데 도움이 됩니다. 공개, 보호 및 비공개 변수를 정의하고 사용하는 방법을 이해하는 것은 Python에서 효과적인 객체 지향 프로그래밍에 매우 중요합니다.
위 내용은 Python - 클래스에서 공개, 비공개 및 보호 변수를 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까? HTML 또는 기타 마크 업 언어를 다룰 때는 정규 표현식이 종종 필요합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!
