이 기사의 예에서는 Python 개체와 개체 지향 기술을 설명합니다. 다음과 같이 참고할 수 있도록 모든 사람과 공유하세요.
1 먼저 예제를 살펴보겠습니다. 이 장에서는 이 예제 프로그램을 설명합니다.
파일: fileinfo.py:
"""Framework for getting filetype-specific metadata. Instantiate appropriate class with filename. Returned object acts like a dictionary, with key-value pairs for each piece of metadata. import fileinfo info = fileinfo.MP3FileInfo("/music/ap/mahadeva.mp3") print "\n".join(["%s=%s" % (k, v) for k, v in info.items()]) Or use listDirectory function to get info on all files in a directory. for info in fileinfo.listDirectory("/music/ap/", [".mp3"]): ... Framework can be extended by adding classes for particular file types, e.g. HTMLFileInfo, MPGFileInfo, DOCFileInfo. Each class is completely responsible for parsing its files appropriately; see MP3FileInfo for example. """ import os import sys from UserDict import UserDict def stripnulls(data): "strip whitespace and nulls" return data.replace("{post.content}", "").strip() class FileInfo(UserDict): "store file metadata" def __init__(self, filename=None): UserDict.__init__(self) self["name"] = filename class MP3FileInfo(FileInfo): "store ID3v1.0 MP3 tags" tagDataMap = {"title" : ( 3, 33, stripnulls), "artist" : ( 33, 63, stripnulls), "album" : ( 63, 93, stripnulls), "year" : ( 93, 97, stripnulls), "comment" : ( 97, 126, stripnulls), "genre" : (127, 128, ord)} def __parse(self, filename): "parse ID3v1.0 tags from MP3 file" self.clear() try: fsock = open(filename, "rb", 0) try: fsock.seek(-128, 2) tagdata = fsock.read(128) finally: fsock.close() if tagdata[:3] == "TAG": for tag, (start, end, parseFunc) in self.tagDataMap.items(): self[tag] = parseFunc(tagdata[start:end]) except IOError: pass def __setitem__(self, key, item): if key == "name" and item: self.__parse(item) FileInfo.__setitem__(self, key, item) def listDirectory(directory, fileExtList): "get list of file info objects for files of particular extensions" fileList = [os.path.normcase(f) for f in os.listdir(directory)] fileList = [os.path.join(directory, f) for f in fileList if os.path.splitext(f)[1] in fileExtList] def getFileInfoClass(filename, module=sys.modules[FileInfo.__module__]): "get file info class from filename extension" subclass = "%sFileInfo" % os.path.splitext(filename)[1].upper()[1:] return hasattr(module, subclass) and getattr(module, subclass) or FileInfo return [getFileInfoClass(f)(f) for f in fileList] if __name__ == "__main__": for info in listDirectory("/music/_singles/", [".mp3"]): print "\n".join(["%s=%s" % (k, v) for k, v in info.items()]) print
2 from module import를 사용하여 모듈을 가져옵니다.
앞서 배운 가져오기 모듈은 다음 구문을 사용합니다.
import 모듈 이름
이런 식으로 이 모듈에 있는 것을 사용해야 할 때는 모듈 이름을 사용해야 합니다. 모듈 이름을 사용하면 오류가 발생합니다.
>>> import types >>> types.FunctionType <type> >>> FunctionType</type>
이제 모듈에서 이름을 가져오는 또 다른 구문을 살펴보세요.
from module Name import name
또는
from module name을 사용하세요. import *
예:
Traceback (most recent call last): File "<interactive>", line 1, in <module> NameError: name 'FunctionType' is not defined</module></interactive>
이렇게 가져온 이름은 모듈 이름 없이 직접 사용할 수 있습니다. 예:
>>> from types import FunctionType
3 클래스 정의
클래스 정의 구문:
class 클래스 이름:
pass 또는 클래스 클래스 이름(기본 클래스 목록): pass
>>> FunctionType <type></type>
클래스 생성자는 다음과 같습니다.
class A(B) : " this is class A. "
단, 정확히 말하면 이 클래스의 객체를 생성한 것으로만 볼 수 있습니다. 이 함수가 실행되면 객체가 초기화됩니다.
예:
__init__
다음은 클래스 A의 정의입니다. 생성자가 생성되고 기본 클래스 B의 생성자가 호출됩니다.
Python에서는 파생 클래스를 생성할 때 기본 클래스의 생성자가 "자동으로" 호출되지 않습니다.
모든 클래스 메소드. 첫 번째 매개변수는 이 포인터를 수신하는 데 사용됩니다. 일반적으로 이 매개변수의 이름은 self입니다.
이 매개변수를 전달하는 경우에는 필요하지 않습니다.
단, 위와 같은 생성자에서는 기본 클래스의 __init() 호출 시 이 매개변수를 명시적으로 주어야 합니다.
4 클래스 인스턴스화
클래스 인스턴스화는 다른 클래스 인스턴스화와 유사합니다. 다른 언어에서는 클래스 이름을 함수로 호출합니다.
클래스 이름(매개변수 목록)
첫 번째 매개변수 self.
of __init__는 매개변수 목록에 제공될 필요가 없습니다. 예:
a = A()
클래스 또는 클래스의 인스턴스에 대한 문서를 볼 수 있습니다. 예를 들면 다음과 같습니다:
class A(B) : "this is class A. " def __init__ (self): B.__init__(self)
또한 인스턴스를 통해 클래스를 얻을 수 있습니다. 예를 들면 다음과 같습니다. 🎜>
>>> A.__doc__ 'this is class A. ' >>> a.__doc__ 'this is class A. '클래스 인스턴스를 만든 후에는 재활용에 대해 걱정할 필요가 없습니다. 가비지 수집은 참조 횟수에 따라 자동으로 삭제됩니다. >
Python에는 클래스 데이터 멤버에 대한 특별한 선언문이 없습니다. 대신 할당 중에 "갑자기 생성"됩니다. 예:
>>> a.__class__ <class></class>
이때 데이터는 자동으로 클래스 A의 멤버가 됩니다.
이후에는 클래스 정의에서 클래스를 사용해야 합니다. 의 멤버 변수나 멤버 메서드는 self로 한정되어야 합니다.
따라서 일반적으로 데이터 멤버는 어떤 방법으로든 self에 값을 할당합니다.
그러나 모든 멤버에 초기 값을 할당하는 것이 좋습니다. __init__ 메소드의 데이터 속성.
Python은 함수 오버로딩을 지원하지 않습니다.
여기서는 코드 들여쓰기에 대해 이야기하겠습니다. 실제로 코드 블록에 한 문장만 있으면 직접 배치할 수 있습니다. 콜론 뒤에는 들여쓰기 형식을 적용할 필요가 없습니다.
6 특수 클래스 메소드
는 클래스에서 특수 메소드를 정의할 필요가 없습니다. 대신 Python은 특정 시간에 자동으로 호출합니다.
데이터 항목 가져오기 및 설정
이를 위해서는 __getitem__ 및 __setitem__ 메서드를 정의해야 합니다.
예:
class A : def __init__(self) : self.data = []
a[1]는 여기서 __getitem__ 메서드를 호출합니다. 이는 a.__getitem__( 1)
__getitem__ 메서드와 유사합니다. __setitem__
입니다. 예를 들어 위의 클래스 A에 정의되어 있습니다.
>>> class A: ... def __init__(self): ... self.li = range(5) ... def __getitem__(self, i): ... return self.li[-i] ... >>> a = A() >>> print a[1]
그런 다음 이 메서드를 다음과 같이 호출합니다.
a[1] = 0은 a.__setitem__(1, 0)
7 고급 특수 클래스 메서드
를 호출하는 것과 동일하며_ _getitem__ __setitem__도 유사합니다. 다음과 같습니다:
def __setitem__(self, key, item): self.li[key] = item
이 전용 메서드는 이 개체의 문자열 표현을 나타내는 데 사용됩니다. For는 내장 함수입니다. 예를 들어,
def __repr__(self): return repr(self.li)
실제로 대화형 창에서는
모든 개체에 적용할 수 있습니다. 그리고 Enter를 누르면 변수의 값이 표시됩니다.
repr(a)
호출할 때 두 인스턴스가 동일한지 비교하는 데 사용됩니다. 다음과 같습니다:
def __cmp__(self, x): if isinstance(x, A): return cmp(self.li, x.li)
a와 b가 같은지 비교합니다. a.cmp(b)
a = A() b = A() a == b객체의 길이를 반환하는데 사용됩니다. len(객체) 사용 시 호출됩니다.
원하는 논리적 길이 값을 지정할 때 사용합니다.
def __len__(self): return len(self.li)
del 객체 [키] 호출 시 이 함수가 호출됩니다.
8 클래스 속성
def __delitem__(self, key): del self.li[key]를 참조할 수 있습니다(수정됨). ) 또는 예를 들어 인용(수정)합니다. 예:
class A : l = [1, 2, 3]또는
A.l9가지 프라이빗 기능
Python에는 "비공개"라는 개념도 있습니다.
비공개 함수는 모듈 외부에서 호출할 수 없습니다.
비공개 클래스 메서드는 클래스 외부에서 호출할 수 없습니다.
비공개 속성은 다음을 수행할 수 없습니다.
Python에는 비공개와 공개의 두 가지 유형만 있습니다. 공개와 비공개의 구분은 함수, 클래스 메서드 및 클래스 속성 이름에 따라 다릅니다.
비공개 항목의 이름은 __로 시작합니다. (그러나 앞에서 언급한 특수 메서드(예: __getitem__)는 비공개가 아닙니다.)
파이썬 개체 및 객체 지향 기술과 관련된 추가 기사를 보려면 , PHP 중국어 웹사이트를 주목해주세요!

Python의 유연성은 다중 파리가 지원 및 동적 유형 시스템에 반영되며, 사용 편의성은 간단한 구문 및 풍부한 표준 라이브러리에서 나옵니다. 유연성 : 객체 지향, 기능 및 절차 프로그래밍을 지원하며 동적 유형 시스템은 개발 효율성을 향상시킵니다. 2. 사용 편의성 : 문법은 자연 언어에 가깝고 표준 라이브러리는 광범위한 기능을 다루며 개발 프로세스를 단순화합니다.

Python은 초보자부터 고급 개발자에 이르기까지 모든 요구에 적합한 단순성과 힘에 호의적입니다. 다목적 성은 다음과 같이 반영됩니다. 1) 배우고 사용하기 쉽고 간단한 구문; 2) Numpy, Pandas 등과 같은 풍부한 라이브러리 및 프레임 워크; 3) 다양한 운영 체제에서 실행할 수있는 크로스 플랫폼 지원; 4) 작업 효율성을 향상시키기위한 스크립팅 및 자동화 작업에 적합합니다.

예, 하루에 2 시간 후에 파이썬을 배우십시오. 1. 합리적인 학습 계획 개발, 2. 올바른 학습 자원을 선택하십시오. 3. 실습을 통해 학습 된 지식을 통합하십시오. 이 단계는 짧은 시간 안에 Python을 마스터하는 데 도움이 될 수 있습니다.

Python은 빠른 개발 및 데이터 처리에 적합한 반면 C는 고성능 및 기본 제어에 적합합니다. 1) Python은 간결한 구문과 함께 사용하기 쉽고 데이터 과학 및 웹 개발에 적합합니다. 2) C는 고성능과 정확한 제어를 가지고 있으며 게임 및 시스템 프로그래밍에 종종 사용됩니다.

Python을 배우는 데 필요한 시간은 개인마다 다릅니다. 주로 이전 프로그래밍 경험, 학습 동기 부여, 학습 리소스 및 방법 및 학습 리듬의 영향을받습니다. 실질적인 학습 목표를 설정하고 실용적인 프로젝트를 통해 최선을 다하십시오.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

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

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

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