>  기사  >  백엔드 개발  >  Python의 기본 학습 소개

Python의 기본 학습 소개

零下一度
零下一度원래의
2017-07-19 23:47:441261검색

 파이썬에서 첫 글자가 대문자인 이름은 클래스를 의미합니다. 이 클래스 정의의 대괄호는 공백에서 이 클래스를 생성하기 때문에 비어 있습니다. 우리는 이 클래스의 기능을 설명하는 독스트링을 작성했습니다. 클래스의 함수를 메서드라고 합니다.

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:

   4 속성이 없습니다. 이렇게 하면 외부 코드는 임의로 사용할 수 없습니다. 접근 제한 보호를 통해 코드가 더욱 견고해지도록 개체의 내부 상태를 수정합니다. 그러나 외부 코드가 이름과 점수를 얻으려는 경우 get_name 및 get_score와 같은 메소드를 Student 클래스에 추가할 수 있습니다:

>>> bart = Student('Bart Simpson', 98)

>>> 가장 최근의 마지막 호출 ):

파일 "", 1행,

AttributeError: 'Student' 객체에 '__name'

class Student(object): 5. 외부 코드에서 점수를 수정하도록 허용하려면 Student에 set_score 메서드를 추가하면 됩니다. class:

...

def get_name(self):

return self.__name

def get_score(self):

return self.__score

class Student(object): 6. 원래 직접 호출과 비교 매개변수에서 잘못된 매개변수 전달을 피하기 위해 매개변수를 확인할 수 있습니다.

...

def set_score(self, Score):

self.__score = Score

class Student(object):

...

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)라고 하며 상속된 클래스를 기본 클래스, 상위 클래스 또는 슈퍼 클래스라고 합니다. 수업).

class Dog(동물): #Inherit Animal

Pass

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() 메서드가 올바르게 작성되었는지 확인하세요. 이것은 유명한 "개방 및 폐쇄" 원칙입니다.

  • 확장을 위해 개방: 새로운 Animal 하위 클래스를 허용합니다.

  • 수정을 위해 폐쇄: Animal 유형에 의존하는 run_twice()와 같은 함수를 수정할 필요가 없습니다.

9.3.5 __slots__ 사용

제한을 달성하기 위해 Python에서는 클래스를 정의할 때 특수 __slots__ 변수를 정의하여 클래스 인스턴스에 추가할 수 있는 속성을 제한할 수 있습니다.

class Student(object):

__slots__ = ('name', 'age') # 튜플을 사용하여 바인딩을 허용하는 속성 이름을 정의합니다

__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 ):

...

>>> print(Student('Michael'))

학생 개체 (이름: Michael)

  이렇게 인쇄된 예제는 보기에도 좋을 뿐만 아니라 을 제공할 뿐만 아니라 인스턴스 내부의 중요한 데이터를 쉽게 볼 수 있도록 해줍니다.

  인쇄하지 않고 변수를 직접 입력하면 인쇄된 예제가 여전히 보기 좋지 않습니다.

>>> s = Student('Michael')

>>> <__main__ .Student object at 0x109afb310>

 이것은 직접 표시 변수 호출이 __str__()이 아니라 __repr__()이기 때문입니다. 둘 사이의 차이점은 __str__()이 문자열을 반환한다는 것입니다. 그리고 __repr__()은 프로그램 개발자가 보는 문자열을 반환합니다. 즉, __repr__()은 디버깅을 위한 것입니다.

 해결책은 또 다른 __repr__()을 정의하는 것입니다. 그러나 일반적으로 __str__() 및 __repr__()의 코드는 동일하므로 이를 작성하는 게으른 방법이 있습니다:

class Student(object):

def __init__(self, name):

self .name = name def __Str __ (Self): class Fib(object): def __init__(self):

Return 'Student Object (name = % s)' % Self.name

__repr______ITER__

리스트나 튜플과 같은 for...in 루프, 그런 다음 Python의 for 루프는 StopIteration 오류가 발생할 때 루프를 종료할 때까지 반복 객체의 __next__() 메서드를 계속 호출합니다.

피보나치 수열을 예로 들어 for 루프에서 사용할 수 있는 Fib 클래스를 작성합니다.

self.a, self .b = 0, 1 # 두 개의 카운터 초기화 a, b

def __iter__(self):

return self # 인스턴스 자체는 반복 객체이므로 자체 반환 11

def __next__(self):

self.a, self.b = self.b, self.a + self.b # 다음 값 계산

                                                                                                                       ’ s ’ s ’ s ‐ ‐ ‐ ‐ 다음 값으로

                                                        A # 반품 다음 값으로

이제 FIB 인스턴스를 for 루프로 시도해 보세요:

& gt; & gt & gt; for n in fib ():

... )

...

2

35

...

46368

75025

__getitem__

Fib 인스턴스는 for 루프에서 사용할 수 있고 약간 목록처럼 보이지만 여전히 목록으로 사용할 수 없습니다. 예를 들어 5번째 요소를 사용합니다.

> >> ; Fib()[5]

추적(가장 최근 호출 마지막):

파일 "", 1행,

TypeError: 'Fib' 개체가 인덱싱을 지원하지 않습니다.

 목록처럼 동작하고 첨자로 요소를 검색하려면 __getitem__() 메서드를 구현해야 합니다.

class Fib(object):

def __getitem__(self, n):

a, b = 1, 1

for x in range (n):

A, B = B, A + B

Return a

__Getattr__

Python 및 다른 메커니즘, 즉, 하나 쓰기 _ _getattr__() 메서드는 속성을 동적으로 반환합니다. 점수와 같이 존재하지 않는 속성을 호출할 때 Python 인터프리터는 속성을 얻기 위해 __getattr__(self, 'score') 호출을 시도하므로 점수 값을 반환할 수 있는 기회를 갖게 됩니다. 이름과 같은 기존 속성은 __getattr__에서 조회되지 않습니다.

__call__

 1. 모든 클래스는 인스턴스를 직접 호출하기 위해 __call__() 메서드만 정의하면 됩니다.

  2. callable() 함수를 통해 객체가 "호출 가능한" 객체인지 여부를 확인할 수 있습니다.

9.3.8 열거형 클래스

  이러한 열거형에 대한 클래스 유형을 정의하면 각 상수는 클래스의 고유한 인스턴스가 됩니다. Python은 이 함수를 구현하기 위해 Enum 클래스를 제공합니다:

from enum import Enum

Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May' , '6월', '7월', '8월', '9월', '10월', '11월', '12월'))

9.3.9 Metaclass

type()

  클래스 객체를 생성하기 위해 type() 함수는 3개의 매개변수를 차례로 전달합니다:

  1. 클래스 이름,

  2. 상속된 상위 클래스 컬렉션, Python에 주의하세요. 다중 상속을 지원합니다. 튜플의 단일 요소 작성 방법을 잊지 마세요.

  3. 클래스의 메서드 이름이 함수에 바인딩됩니다. 안녕하세요.

metaclass

메타클래스는 문자 그대로 메타클래스로 번역되며 간단한 설명은 다음과 같습니다. 클래스를 정의한 후 이 클래스를 기반으로 인스턴스를 생성할 수 있으므로 먼저 클래스를 정의한 다음 인스턴스를 생성합니다. 하지만 클래스를 만들고 싶다면 어떻게 해야 할까요? 그런 다음 메타클래스를 기반으로 클래스를 생성해야 하므로 먼저 메타클래스를 정의한 다음 클래스를 생성합니다. 연결은 다음과 같습니다. 먼저 메타클래스를 정의한 다음 클래스를 생성하고 마지막으로 인스턴스를 생성할 수 있습니다.

__new__() 메소드가 수신하는 매개변수는 다음과 같습니다.

  1. 현재 생성 중인 클래스의 객체

  2. 클래스 이름

  3. 클래스가 상속하는 상위 클래스 컬렉션.

  4. class 메소드 컬렉션.

9.3.10 인스턴스를 속성으로 사용

코드를 사용하여 실제 개체를 시뮬레이션할 때, 점점 더 많은 기능과 세부 정보를 추가하면 속성과 메서드는 물론 코드 파일도 점점 길어지고, 이때 일부를 분리하여 클래스로 재구성할 수 있습니다. 큰 범주는 여러 하위 범주로 나눌 수 있습니다.

9.3.11 물리적 객체 시뮬레이션

  더 복잡한 물리적 객체를 시뮬레이션하려면 더 높은 논리적 수준에서 이를 고려해야 합니다. 보다 효율적이고 간결하며 정확한 코드를 작성하려면 클래스를 지속적으로 재구성해야 할 수도 있습니다.

9.4 클래스 가져오기

  1. 클래스가 계속 추가되면서 상속이 뛰어나도 코드가 매우 길어지므로 Python에서는 클래스를 모듈로 가져올 수 있습니다. 그리고 메인 프로그램에서 사용하기 위해 필요한 모듈을 가져옵니다.

 2. 각 모듈에 대한 문서 문자열을 작성하고, 모듈의 기능을 설명하고, 내용을 간략하게 설명하세요.

 3. 모듈에서 여러 클래스를 가져와서 쉼표로 구분하고 필요에 따라 인스턴스를 만듭니다.

 4. 전체 클래스를 가져와서 인스턴스 앞에 클래스 이름을 추가하고 필요한 클래스에 액세스할 수도 있습니다.

 5. 한 모듈을 다른 모듈로 가져옵니다.

9.5 Python 표준 라이브러리(모듈)

 Python 표준 라이브러리는 import 문만으로 Import 및 사용할 수 있는 모듈 집합입니다.

  사전을 사용하면 정보를 연결할 수 있지만 키-값 쌍을 추가하는 순서를 기록하지 않습니다. 사전을 만들고 키-값 쌍이 추가되는 순서를 기록하려면 컬렉션에서 OrderDict 클래스를 사용할 수 있습니다. 기준 치수. OrderedDict의 인스턴스는 사전과 동일하지만 키-값 쌍이 추가되는 순서를 기록합니다.

 OrderdDict는 매우 훌륭합니다. 때로는 필요한 목록과 사전의 특성을 모두 갖추고 있습니다.

random module

 다양한 방법으로 난수를 생성하는 기능이 포함되어 있습니다. 여기서 randint()는 지정된 범위 내의 정수를 반환합니다.

datetime은 모듈입니다

  datetime 모듈에는 datetime 클래스도 포함되어 있습니다. datetime 클래스는 from datetime import datetime을 통해 가져옵니다. import datetime만 가져오는 경우 전체 이름 datetime.datetime을 인용해야 합니다.

  Datetime.now()는 현재 날짜와 시간을 반환하며 해당 유형은 datetime입니다.

일반적으로 사용되는 타사 라이브러리

MySQL 드라이버도 있습니다: mysql-connector-python, 과학 컴퓨팅을 위한 NumPy 라이브러리: numpy, 텍스트 생성을 위한 템플릿 도구 Jinja2 등

 1.urlparse 모듈, urlpasrse 모듈은 URL 문자열 처리를 위한 몇 가지 기본 기능을 제공합니다. 이러한 함수에는 urlparse(), urlunparse() 및 urljoin()이 포함됩니다.

 2.urlparse()는 urlstr을 6-튜플(prot_sch, net_loc, path, params, query, frag)로 구문 분석합니다. 여기의 각 구성 요소는 이전에 설명되었습니다.

  3. urlunparse()의 기능은 urlpase()의 기능과 완전히 반대입니다. urlparse(), splices에 의해 처리된 URL에서 urltup 6-튜플(prot_sch, net_loc, path, params, query, frag)을 생성합니다. 이를 URL로 변환하고 를 반환합니다.

 4. urllib 모듈은 지정된 URL에서 데이터를 다운로드하는 데 사용할 수 있는 다양한 기능을 제공합니다. 또한 문자열을 URL에서 올바른 형식으로 표시할 수 있도록 인코딩 및 디코딩할 수도 있습니다. 아래에서 소개할 함수로는 urlopen(), urlretrieve(), quote(), unquote(), quote_plus(), unquote_plus(), urlencode() 등이 있습니다.

 5.urlopen()은 주어진 URL 문자열로 표시되는 웹 연결을 열고 파일 유형의 객체를 반환합니다.

  6.urlretrieve()는 파일 형태의 URL에 접근하여 여는 데 사용되는 것이 아니라, 완전한 HTML을 다운로드하여 파일로 저장하는 데 사용됩니다.

9.6 클래스 코딩 스타일

  특히 프로그램이 복잡한 경우 클래스와 관련된 코딩 스타일에 익숙해지세요.

 1. 클래스 이름은 Camel Case 명명 방법을 사용해야 합니다. 즉, 클래스의 첫 글자는 밑줄 없이 대문자로 쓰고, 인스턴스 이름과 모듈 이름의 첫 글자는 소문자로 하고, 밑줄을 사용하여 연결합니다. 단어.

  2. 각 클래스 정의 뒤에 문서 문자열 설명을 추가하여 클래스의 기능을 간략하게 설명하고, 각 모듈 아래에 문서 문자열 설명을 추가하여 해당 모듈 아래 클래스가 수행할 수 있는 작업을 간략하게 설명합니다.

 3. 빈 줄을 사용하여 코드를 정리하되 남용하지 마세요. 빈 줄 하나를 사용하여 클래스의 메서드를 구분할 수 있고, 빈 줄 두 개를 사용하여 클래스를 구분할 수 있습니다.

  4. 표준 라이브러리에 있는 모듈과 직접 작성한 모듈을 동시에 임포트해야 할 경우, 먼저 표준 라이브러리 모듈을 임포트하는 import 문을 빈 줄로 구분하여 작성한 후, 작성한 모듈 import 문을 임포트하세요. 스스로. import 문을 여러 개 포함하면 프로그램 내 각 모듈의 출처를 더 쉽게 이해할 수 있습니다.

위 내용은 Python의 기본 학습 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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