Python의 기본 학습 소개
파이썬에서 첫 글자가 대문자인 이름은 클래스를 의미합니다. 이 클래스 정의의 대괄호는 공백에서 이 클래스를 생성하기 때문에 비어 있습니다. 우리는 이 클래스의 기능을 설명하는 독스트링을 작성했습니다. 클래스의 함수를 메서드라고 합니다.
Student 클래스를 예로 들어 보겠습니다. Python에서 클래스 정의는 class 키워드를 통해 이루어집니다.
class Student(객체): pass |
클래스 뒤에는 즉, Student의 경우 클래스 이름은 일반적으로 대문자로 시작하고 그 뒤에 (object)가 오는 단어로 구성되며 일반적으로 적합한 상속 클래스가 없는 경우 객체 클래스를 사용합니다. 이것이 결국 상속된 클래스가 수행하는 작업입니다.
9.1.1 수업 만들기
class 학생(객체): def __init__(self, name, Score): self.name = name self.score = 점수 |
1. __init__() 메서드는 특별한 메서드입니다. Python은 새 인스턴스가 생성될 때 자동으로 실행합니다. 시작과 끝에 두 개의 밑줄이 있습니다. 이는 Python 기본 메서드와 일반 메서드 간의 이름 충돌을 피하기 위해 고안된 규칙입니다. 이 방법의 정의에서 형식 매개변수 self는 필수이며 다른 형식 매개변수 앞에 위치해야 합니다.
2. 클래스와 연결된 각 메서드 호출은 인스턴스 자체에 대한 참조인 실제 매개변수 self를 자동으로 전달하여 인스턴스가 클래스의 속성과 메서드에 액세스할 수 있도록 합니다. self는 자동으로 전달되므로 전달할 필요가 없습니다.
3. self 접두사가 붙은 변수는 클래스의 모든 메서드에서 사용할 수 있으며 클래스의 모든 인스턴스를 통해 이러한 변수에 액세스할 수도 있습니다.
4.self.name= name 이와 같이 인스턴스를 통해 접근할 수 있는 변수를 속성이라고 합니다
5. 객체지향 프로그래밍의 중요한 특징은 데이터 캡슐화입니다. 클래스 내부의 데이터에 액세스하기 위한 함수를 직접 정의하여 "데이터"를 캡슐화할 수 있습니다. 이러한 데이터를 캡슐화하는 함수는 Student 클래스 자체와 연결되어 있으며, 이를 클래스의 메서드라고 합니다.
9.1.2 클래스를 기반으로 인스턴스 만들기
일반적으로 대문자(예: Dog)가 포함된 이름을 다음과 같이 생각할 수 있습니다. 참조하는 것은 클래스를 참조하는 반면 소문자 이름(예: my_dog)은 클래스에서 생성된 인스턴스를 참조합니다.
1. 인스턴스의 속성에 액세스하려면 마침표 표기를 사용할 수 있습니다. my_dog의 속성 이름 값에 액세스하기 위해 다음 코드를 작성했습니다.
my_dog.name
기간 표기법은 Python에서 매우 일반적으로 사용됩니다. 이 구문은 Python이 속성 값을 학습하는 방법을 보여줍니다.
2. Dog 클래스를 기반으로 인스턴스를 생성한 후 마침표 표기법을 사용하여 Dog 클래스에 정의된 모든 메서드를 호출할 수 있습니다.
3. 필요에 따라 클래스를 기반으로 인스턴스를 얼마든지 생성할 수 있습니다.
9.2 클래스 및 인스턴스 사용하기
1. 수행해야 할 중요한 작업은 인스턴스의 속성을 수정하는 것입니다. 인스턴스의 속성을 직접 수정하거나 메서드를 작성하여 특정 방식으로 수정할 수 있습니다.
2. 클래스는 인스턴스를 생성하기 위한 템플릿이며, 인스턴스는 특정 객체입니다. 각 인스턴스가 소유하는 데이터는 서로 독립적이며 서로 영향을 미치지 않습니다. 인스턴스에서 메소드를 호출하여 인스턴스의 데이터에 직접 액세스하고 객체 내부의 데이터를 직접 조작하지만 메소드 내부의 구현 세부 사항을 알 필요는 없습니다. 정적 언어와 달리 Python에서는 모든 데이터를 인스턴스 변수에 바인딩할 수 있습니다. 즉, 두 인스턴스 변수의 경우 동일한 클래스의 다른 인스턴스이더라도 변수 이름이 다를 수 있습니다.
9.2.1 클래스의 초기 값 설정
클래스의 모든 속성은 값이 0이거나 빈 문자열인 경우에도 초기 값을 가져야 합니다. 기본값을 설정할 때와 같은 일부 경우에는 __init__() 메서드 내에서 이러한 초기 값을 지정할 수 있습니다. 속성에 대해 이 작업을 수행하면 초기 값을 제공하는 형식 매개변수를 포함할 필요가 없습니다. 값.
클래스 속성인 속성을 클래스에서 직접 정의합니다.
class Student(객체): name = 'Student' |
프로그램을 작성할 때 인스턴스 속성과 클래스 속성에 동일한 이름을 사용하지 마십시오. 동일한 이름을 가진 인스턴스 속성은 클래스 속성을 차단하기 때문입니다. 그러나 인스턴스 속성을 삭제하고 동일한 이름을 다시 사용하면 다음과 같은 문제가 발생할 수 있습니다. 액세스는 클래스 속성이 됩니다.
9.2.2 속성 값 수정
속성 값은 세 가지 방법으로 수정할 수 있습니다:
1. 인스턴스를 통해 직접 수정
2. 메소드를 통해 설정
3. 증분 (특정 값을 증가시키는) 방법을 통해.
9.2.3 접근 제한
1. 클래스 내부에는 속성과 메소드가 있을 수 있으며, 외부 코드는 인스턴스 변수 메소드를 직접 호출하여 데이터를 조작할 수 있어 복잡한 내부 로직을 숨길 수 있습니다.
2. 내부 속성이 외부에서 접근되는 것을 방지하려면 속성 이름 앞에 밑줄 __ 두 개를 추가하면 됩니다. Python에서는 인스턴스의 변수 이름이 __로 시작하면 프라이빗 변수(private)가 됩니다. ) 내부에서만 액세스할 수 있으며 외부에서는 액세스할 수 없습니다.
class 학생(객체): def __init__(self, name, Score): self.__name = name self.__score = Score def print_s core(self): print('%s: %s' % (self.__name, self.__score)) |
3. 수정 후 외부 코드에는 변경 사항이 없지만 인스턴스 변수는 더 이상 사용할 수 없습니다. __name 및 인스턴스 변수 .__score:
>>> bart = Student('Bart Simpson', 98) >>> 가장 최근의 마지막 호출 ): 파일 " AttributeError: 'Student' 객체에 '__name' |
... def get_name(self): return self.__name def get_score(self): return self.__score |
... def set_score(self, Score): self.__score = Score |
... def set_score(self, Score): if 0 < ;= 점수 <= 100: el SELF .__ SCORE = Score Else: 값 올리기 오류('나쁜 점수') 7. Python에서 __xxx__와 유사한 변수 이름, 즉 이중 밑줄로 시작하고 이중 밑줄로 끝나는 변수 이름은 특수 변수에 직접 액세스할 수 있으므로 전용 변수가 아니라는 점에 유의해야 합니다. __name__, __score__ 등의 변수 이름은 사용할 수 없습니다. 때로는 _name과 같이 밑줄로 시작하는 인스턴스 변수를 볼 수도 있습니다. 그러나 이러한 인스턴스 변수는 외부에서 액세스할 수 있습니다. 그러나 관례에 따르면 이러한 변수는 "접근할 수 있지만 나를 개인 변수로 취급하고 마음대로 접근하지 마세요." 8. 이중 밑줄로 시작하는 인스턴스 변수가 반드시 외부에서 접근할 수 없는 것은 아닙니다. __name에 직접 액세스할 수 없는 이유는 Python 인터프리터가 외부에서 __name 변수를 _Student__name으로 변경하므로 __name 변수는 여전히 _Student__name을 통해 액세스할 수 있기 때문입니다. 9.3 상속1. 클래스가 다른 클래스의 특수 버전과 유사한 경우 상속을 사용할 수 있습니다. 클래스가 다른 클래스를 상속하면 자동으로 다른 클래스의 모든 속성과 메서드를 가져옵니다. 원래 클래스는 상위 클래스이고 새 클래스는 하위 클래스입니다. 2. 하위 클래스는 상위 클래스의 모든 속성과 메서드를 상속하며, 자체 속성과 메서드를 정의할 수도 있습니다. OOP 프로그래밍에서는 클래스를 정의할 때 기존 클래스에서 상속할 수 있습니다. 새 클래스를 하위 클래스(Subclass)라고 하며 상속된 클래스를 기본 클래스, 상위 클래스 또는 슈퍼 클래스라고 합니다. 수업).
9.3.1 하위 클래스 메서드 __init__()1. 상속을 위해서는 상위 클래스의 모든 속성에 값을 할당해야 합니다. 클래스의 __init__()에는 상위 클래스의 도움이 필요합니다. 2. 그리고 상속 파일에서 상위 클래스는 하위 클래스 앞에 있어야 합니다. 3. 하위 클래스 정의 시 상위 클래스 이름을 괄호 안에 명시해야 합니다. 4.super() 특수 함수는 Python이 상위 클래스와 하위 클래스를 병렬로 연결하는 데 도움이 됩니다. 부모 클래스는 슈퍼 클래스라고도 불리며, 슈퍼의 기원이다. 9.3.2 하위 클래스의 메서드 및 속성 정의클래스가 클래스에서 상속되도록 합니다. 하위 클래스를 상위 클래스와 구별하는 속성 및 메서드를 추가할 수 있습니다. 9.3.3 상위 클래스 재작성상위 클래스에 해당하는 메소드는 하위 클래스의 요구 사항을 충족하지 않는 경우에만 하위 클래스에 새로운 메소드를 추가하여 하위 클래스의 특성을 설명할 수 있습니다. 상위 카테고리 중 최악의 카테고리를 제거하고 최선의 카테고리를 선택하세요. 9.3.4 다형성1. 하위 클래스와 상위 클래스 모두에 동일한 메서드가 있는 경우 하위 클래스가 상위 클래스의 메서드를 재정의한다고 합니다. 코드가 실행될 때 하위 클래스의 메서드는 항상 적용됩니다. . 이런 식으로 상속의 또 다른 이점인 다형성 2을 얻습니다. 따라서 상속 관계에서 인스턴스의 데이터 유형이 하위 클래스인 경우 해당 데이터 유형도 상위 클래스로 간주될 수 있습니다. 그러나 그 반대는 사실이 아닙니다. 3. 다형성의 장점은 Dog, Cat, Tortoise...를 전달해야 할 때 Animal 유형만 수신하면 된다는 것입니다. 왜냐하면 Dog, Cat, Tortoise...는 모두 Animal 유형이기 때문입니다. , 동물의 종류에 따라 조작이 가능합니다. Animal 유형에는 run() 메소드가 있으므로 전달된 모든 유형이 Animal 클래스이거나 하위 클래스인 한 자동으로 실제 유형의 run() 메소드를 호출합니다. 이것이 바로 다형성을 의미합니다. 4. 변수의 경우 동물 유형이라는 것만 알면 됩니다. 해당 하위 유형을 정확히 알 필요는 없으므로 안심하고 run() 메소드를 호출할 수 있습니다. Animal, Dog , Cat 또는 Tortoise 객체의 경우 런타임 시 객체의 정확한 유형에 따라 결정됩니다. 이것이 다형성의 진정한 힘입니다. 호출자는 세부 사항에 관계없이 호출에만 관심을 갖고 새 항목을 추가합니다. Animal의 하위 클래스인 경우 원본 코드 호출 방법에 관계없이 run() 메서드가 올바르게 작성되었는지 확인하세요. 이것은 유명한 "개방 및 폐쇄" 원칙입니다.
9.3.5 __slots__ 사용제한을 달성하기 위해 Python에서는 클래스를 정의할 때 특수 __slots__ 변수를 정의하여 클래스 인스턴스에 추가할 수 있는 속성을 제한할 수 있습니다.
__slots__를 사용할 때 __slots__에 의해 정의된 속성은 현재 클래스 인스턴스에만 영향을 미치고 상속된 하위 클래스에는 영향을 미치지 않습니다. 9.3.6 다중 상속1. 다중 상속을 통해 하위 클래스는 여러 상위 클래스의 모든 기능을 동시에 얻을 수 있습니다. 2. 클래스의 상속 관계를 설계할 때 일반적으로 메인 라인은 단일 소스에서 상속됩니다. 예를 들어 Ostrich는 Bird에서 상속됩니다. 그러나 추가 기능을 "혼합"해야 하는 경우 다중 상속을 통해 이를 달성할 수 있습니다. 예를 들어 Ostrich가 Bird에서 상속하는 것 외에도 Runnable을 상속하도록 할 수 있습니다. 이 디자인은 종종 MixIn이라고 불립니다. MixIn의 목적은 클래스에 여러 함수를 추가하는 것입니다. 이처럼 클래스를 설계할 때 우리는 다단계 복잡한 상속 관계를 설계하는 대신 다중 상속을 통해 여러 MixIn 함수를 결합하는 것을 우선시합니다. 3. 이렇게 하면 복잡하고 거대한 상속 체인이 필요하지 않습니다. 서로 다른 클래스의 기능을 결합하기만 하면 필요한 하위 클래스를 빠르게 구성할 수 있습니다. Python은 다중 상속을 허용하므로 MixIn이 일반적인 디자인입니다. 단일 상속만 허용하는 언어(예: Java)는 MixIn의 디자인을 사용할 수 없습니다. 9.3.7 사용자 정의 클래스1. Python 클래스에는 클래스를 사용자 정의하는 데 도움이 되는 특수 목적 함수가 많이 있습니다. __str____str__() 메소드를 정의하면 보기 좋은 문자열을 반환할 수 있습니다:
class Student(object): def __init__(self, name):
self.a, self .b = 0, 1 # 두 개의 카운터 초기화 a, bdef __iter__(self):
2
위 내용은 Python의 기본 학습 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요! 본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
![]() 핫 AI 도구![]() Undresser.AI Undress사실적인 누드 사진을 만들기 위한 AI 기반 앱 ![]() AI Clothes Remover사진에서 옷을 제거하는 온라인 AI 도구입니다. ![]() Undress AI Tool무료로 이미지를 벗다 ![]() Clothoff.ioAI 옷 제거제 ![]() AI Hentai GeneratorAI Hentai를 무료로 생성하십시오. ![]() 인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
Repo : 팀원을 부활시키는 방법
1 몇 달 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
R.E.P.O. 파일 저장 위치 : 어디에 있고 그것을 보호하는 방법은 무엇입니까?
3 몇 주 전
By DDD
![]() 뜨거운 도구![]() 메모장++7.3.1사용하기 쉬운 무료 코드 편집기 ![]() SublimeText3 중국어 버전중국어 버전, 사용하기 매우 쉽습니다. ![]() 스튜디오 13.0.1 보내기강력한 PHP 통합 개발 환경 ![]() 드림위버 CS6시각적 웹 개발 도구 ![]() SublimeText3 Mac 버전신 수준의 코드 편집 소프트웨어(SublimeText3) ![]() 뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
![]() ![]()
자바 튜토리얼
![]() ![]()
Cakephp 튜토리얼
![]() ![]()
라라벨 튜토리얼
![]() ![]()
PHP 튜토리얼
![]() ![]() ![]() 작은 XML 파일의 경우 주석 내용을 텍스트 편집기로 직접 교체 할 수 있습니다. 큰 파일의 경우 XML 파서를 사용하여 효율성과 정확성을 보장하기 위해 수정하는 것이 좋습니다. XML 주석을 삭제할 때주의를 기울이면 주석을 유지하면 일반적으로 코드 이해 및 유지 관리에 도움이됩니다. 고급 팁은 XML 파서를 사용하여 댓글을 수정하기위한 파이썬 샘플 코드를 제공하지만 사용 된 XML 라이브러리에 따라 특정 구현을 조정해야합니다. XML 파일을 수정할 때 인코딩 문제에주의하십시오. UTF-8 인코딩을 사용하고 인코딩 형식을 지정하는 것이 좋습니다. ![]() XML 컨텐츠를 수정하려면 프로그래밍이 필요합니다. 대상 노드를 추가, 삭제, 수정 및 확인하려면 정확한 찾기가 필요하기 때문입니다. 프로그래밍 언어에는 XML을 처리하기위한 해당 라이브러리가 있으며 운영 데이터베이스와 같이 안전하고 효율적이며 제어 가능한 작업을 수행 할 수있는 API를 제공합니다. ![]() 모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다. ![]() XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다. ![]() 대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다. ![]() protobuf에서 문자열 상수 열거를 정의하는 문제 protobuf를 사용할 때 종종 열거 유형을 문자열 상수와 연관시켜야하는 상황이 발생합니다 ... ![]() XML 이미지를 먼저 변환하려면 먼저 XML 데이터 구조를 결정한 다음 Python의 Matplotlib와 같은 적절한 그래픽 라이브러리를 선택하고 데이터 구조를 기반으로 시각화 전략을 선택하고 데이터 볼륨 및 이미지 형식을 고려하고 효율적인 라이브러리를 수행하거나 필요에 따라 PNG, JPEG 또는 SVG로 저장하십시오. ![]() 휴대폰에서 고품질로 XML을 PDF로 변환하려면 클라우드에서 XML을 구문 분석하고 서버리스 컴퓨팅 플랫폼을 사용하여 PDF를 생성합니다. 효율적인 XML 파서 및 PDF 생성 라이브러리를 선택하십시오. 오류를 올바르게 처리합니다. 휴대 전화에서 무거운 작업을 피하기 위해 클라우드 컴퓨팅 파워를 최대한 활용하십시오. 복잡한 XML 구조 처리, 다중 페이지 PDF 생성 및 이미지 추가를 포함하여 요구 사항에 따라 복잡성을 조정하십시오. 로그 정보를 인쇄하여 디버그를 돕습니다. 성능을 최적화하고 효율적인 파서 및 PDF 라이브러리를 선택하고 비동기 프로그래밍 또는 XML 데이터를 사용할 수 있습니다. 우수한 코드 품질과 유지 관리를 보장하십시오. ![]() |