Python의 개인 속성과 개인 메서드에 대해 이야기해 보겠습니다.
1. 시나리오 정의
개인 속성
은 Python의 객체 지향 개발 프로세스에서 객체의 일부 속성이 객체 내부에서만 사용되기를 원하고 외부에서는 액세스하고 싶지 않음을 의미합니다.
즉, 개인 속성은 객체가 공개할 의사가 없는 속성입니다.
Private 메서드
는 Python의 객체 지향 개발 프로세스에서 객체의 일부 메서드나 기능이 객체 내부에서만 사용되기를 원하고 외부에서는 접근을 원하지 않는다는 것을 의미합니다.
즉, 비공개 메서드는 개체가 공개하고 싶지 않은 메서드나 함수입니다.
2. 구문 정의
Python에서 개인 속성과 개인 메서드를 정의하는 구문은 다음과 같습니다.
class Staff: def __init__(self, s_name, s_salary): self.s_name = s_name self.__salary = s_salary def __secret(self): print("%s 的工资是 %d" % (self.s_name, self.__salary))
(1) __salary는 두 개의 밑줄로 시작하는 개인 속성입니다.
(2) __secret(self)는 두 개의 밑줄로 시작하는 비공개 메서드입니다.
3. 호출 분석
(1) __init__의 객체 초기화 방법에서 두 개의 밑줄로 시작하는 __salary 속성은 비공개 속성입니다.
이제 객체 외부에서 __salary 속성을 호출하여 private 속성에 정상적으로 접근할 수 있는지 확인합니다.
위 그림의 실행 결과에서 볼 수 있듯이 11번째 줄, 즉 객체 외부에서 객체의 개인 속성인 __salary에 액세스하면 Staff 객체 zhangsan에 no가 발생합니다. 속성 __salary.
개인 속성은 객체 외부에서 액세스할 수 없기 때문에 Staff 클래스 객체에 인스턴스 속성 __salary가 있음을 증명합니다.
self.__salary를 self.salary로 수정했습니다. __secret(self) 메서드는 self.__salary 속성을 참조하고 그에 따라 수정했습니다. 아래 그림과 같이 실행 결과를 확인하세요.
실행 결과에서 볼 수 있듯이 이 비공개 속성의 외부 호출은 정상이며 AttributeError 오류가 표시되지 않습니다.
(2) __secret(self) 인스턴스 메소드에서 두 개의 밑줄로 시작하여 정의된 __secret(self) 메소드는 비공개 메소드입니다.
위의 테스트 과정과 동일하게 먼저 객체 외부에서 프라이빗 메소드 __secret(self)를 호출하여 프라이빗 메소드가 정상적으로 호출될 수 있는지 확인합니다.
위 그림의 실행 결과에서 볼 수 있듯이 11번째 줄, 즉 객체 외부에서 객체의 프라이빗 메소드 __secret(self)에 액세스하면 Staff 객체 zhangsan 오류가 발생합니다. __secret 메서드가 없습니다.
개인 메서드는 개체 외부에서 액세스할 수 없기 때문에 Staff 클래스 개체에 인스턴스 메서드 __secret(self)이 있음을 증명합니다.
__secret(self) 메소드를 secret(self)로 수정했는데, 다른 코드는 변경되지 않은 상태로 아래 그림과 같이 실행 결과를 확인하세요.
실행 결과에서 볼 수 있듯이 이 비공개 메서드의 외부 호출은 정상이며 AttributeError 오류가 표시되지 않습니다.
(3) 아래 그림에서 볼 수 있듯이 객체 내부에서 프라이빗 메서드와 프라이빗 속성을 호출할 수 있습니다.
그림에 표시된 것처럼 작업 메서드는 프라이빗 메서드 __secret(self)를 호출하고 프라이빗 메서드 __secret(self)는 프라이빗 속성 __salary를 호출합니다.
객체 외부에서 Staff 클래스 객체 zhangsan을 사용하여 객체의 전용 속성 및 전용 메서드에 간접적으로 액세스할 수 있는 작업 메서드를 호출합니다.
콘솔 출력을 보면 작업 메소드가 객체 내부에 정의된 프라이빗 속성과 프라이빗 메소드에 정상적으로 접근할 수 있음을 알 수 있습니다.
4. Python 의사 비공개 속성 및 비공개 메서드
Python에서는 속성과 메서드의 이름을 지정할 때 내부적으로 이름에 대해 일부 특수 처리를 수행하여 외부 세계에서 해당 이름에 액세스할 수 없도록 하기 때문에 실제로 비공개라는 느낌이 없습니다. . 속성 및 메서드.
프라이빗 속성과 프라이빗 메소드를 예로 들면 Python의 내부 처리 방법은 다음과 같습니다.
(1) 속성: __salary, 처리되는 속성 이름은 _Staff__salary(_class name__attribute name)
(2) 방법: __secret, 처리된 메서드 이름은 다음과 같습니다: _Staff__secret(_class name__method name)
Python의 전용 속성 및 전용 메서드 내부 처리를 알고 있으며 이제 이 처리된 명명 방법을 사용하여 개체 이름을 지정합니다. 외부에서 전용 속성 및 전용 메서드에 액세스하여 액세스할 수 있는지 확인합니다. 보통.
class Staff: def __init__(self, s_name, s_salary): self.s_name = s_name self.__salary = s_salary def __secret(self): return "%s的工资是 %d" % (self.s_name, self.__salary) zhangsan = Staff("张三", 10000) print(zhangsan._Staff__salary) print(zhangsan._Staff__secret())
실행 결과는 아래 사진과 같습니다
콘솔에서 예외가 발생하지 않았으며 이전 AttributeError 오류 메시지가 사라졌습니다.
이 예는 Python이 진정한 의미에서 비공개가 아니라는 것을 증명합니다. 내부 처리 방법을 알고 나면 _class name__ 속성 이름(메서드 이름) 메서드를 사용하여 비공개 객체 외부에서 객체의 내부 정의에 액세스할 수 있습니다. 속성과 개인 메서드.
그러나 이 방법은 일상 작업에서는 권장되지 않습니다. 속성과 메서드가 개체 내부에 정의되면 비공개로 선언되고 호출자는 해당 규칙을 따라야 하기 때문입니다.
저는 이 작은 예를 사용하여 Python에는 실제로 프라이버시가 없다는 점을 설명하고 싶습니다.
위 내용은 Python의 개인 속성과 개인 메서드에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











XML 미화는 합리적인 압입, 라인 브레이크 및 태그 구성을 포함하여 기본적으로 가독성을 향상시키고 있습니다. 원칙은 XML 트리를 가로 지르고 레벨에 따라 들여 쓰기를 추가하고 텍스트가 포함 된 빈 태그와 태그를 처리하는 것입니다. Python의 xml.etree.elementtree 라이브러리는 위의 미화 프로세스를 구현할 수있는 편리한 Pretty_XML () 기능을 제공합니다.

대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다.

XML 컨텐츠를 수정하려면 프로그래밍이 필요합니다. 대상 노드를 추가, 삭제, 수정 및 확인하려면 정확한 찾기가 필요하기 때문입니다. 프로그래밍 언어에는 XML을 처리하기위한 해당 라이브러리가 있으며 운영 데이터베이스와 같이 안전하고 효율적이며 제어 가능한 작업을 수행 할 수있는 API를 제공합니다.

XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

모바일에는 간단하고 직접 무료 XML에서 PDF 툴이 없습니다. 필요한 데이터 시각화 프로세스에는 복잡한 데이터 이해 및 렌더링이 포함되며 시장에있는 소위 "무료"도구의 대부분은 경험이 좋지 않습니다. 컴퓨터 측 도구를 사용하거나 클라우드 서비스를 사용하거나보다 신뢰할 수있는 전환 효과를 얻기 위해 앱을 개발하는 것이 좋습니다.

모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

단일 애플리케이션으로 휴대 전화에서 직접 XML에서 PDF 변환을 완료하는 것은 불가능합니다. 두 단계를 통해 달성 할 수있는 클라우드 서비스를 사용해야합니다. 1. 클라우드에서 XML을 PDF로 변환하십시오. 2. 휴대 전화에서 변환 된 PDF 파일에 액세스하거나 다운로드하십시오.

휴대 전화에서 XML을 PDF로 직접 변환하는 것은 쉽지 않지만 클라우드 서비스를 통해 달성 할 수 있습니다. 가벼운 모바일 앱을 사용하여 XML 파일을 업로드하고 생성 된 PDF를 수신하고 클라우드 API로 변환하는 것이 좋습니다. Cloud API는 Serverless Computing Services를 사용하고 올바른 플랫폼을 선택하는 것이 중요합니다. XML 구문 분석 및 PDF 생성을 처리 할 때 복잡성, 오류 처리, 보안 및 최적화 전략을 고려해야합니다. 전체 프로세스에는 프론트 엔드 앱과 백엔드 API가 함께 작동해야하며 다양한 기술에 대한 이해가 필요합니다.
