이 글에서는 주로 Python 메타클래스 인스턴스 분석을 소개합니다. 이 글의 주요 임무는 메타클래스가 무엇인지 모든 사람에게 철저하게 설명하는 것입니다. 도움이 필요한 친구들이 이를 참조할 수 있습니다.
Gui 삼촌이 Python을 발명하고 여기에 여러 가지 개념을 통합했습니다. . 이 언어에서는 반복자, 데코레이터, 함수, 생성기, 클래스, 객체, 코루틴 등이 있습니다.
이런 개념 중 어느 것도 초보자가 이해하기 쉽지 않을 것 같지만, 이보다 더 어려운 개념이 있습니다. 우리가 직접적으로 사용하는 경우는 거의 없지만 매일 사용하고 있는 Python 세계의 창시자입니다. 오늘의 주인공 ------ 메타클래스.
오늘 내 임무는 메타클래스가 무엇인지 철저히 이해하는 것입니다. 살펴보겠습니다.
메타클래스를 이해하려면 객체부터 시작해 보겠습니다.
Object(객체)
Python 모든 것이 객체입니다. 이 문장을 들어보셨을 것입니다(지금 들어보셨을 것입니다). 숫자는 객체, 문자열은 객체, 목록은 객체입니다. , 사전은 객체입니다. 예:
>>> i = 10 >>> s = "abc" >>> nums = [1,2,3] >>> dicts = {"name":"zhang"}
등호의 오른쪽은 객체이고 왼쪽은 이러한 객체에 지정된 이름입니다. 모든 객체에는 ID라는 세 가지 주요 속성이 있습니다. , 값 및 유형입니다.
식별
식별은 사람의 신분증 ID와 동일합니다. 각 개체에는 고유한 ID ID가 있으며 이는 전체 수명 주기 동안 변경되지 않습니다. 컴퓨터 메모리에. 객체의 ID는 id() 함수를 통해 확인할 수 있습니다.
>>> id(i) 40592592 >>> id(s) 44980584
객체의 두 번째 속성은 값입니다. 예를 들어 i의 값은 10이고 s의 값은 abc입니다. , nums의 값은 1. 2,3입니다.
Type
객체의 또 다른 중요한 속성은 유형입니다. 모든 객체는 해당 유형으로 구성됩니다. 예를 들어 위의 i 유형은 int 유형으로 구성됩니다. 정수. s 유형은 문자열 유형, nums 유형은 목록 유형, dicts 유형은 모두 해당 유형으로 구성됩니다. type()을 통해 객체의 유형을 확인할 수 있습니다.
>>> type(i) <class 'int'> >>> type(s) <class 'str'> >>> type(nums) <class 'list'> >>> type(dicts) <class 'dict'>
클래스 및 (인스턴스) 객체
시스템에서 이미 정의한 정수 유형, 문자열 유형, 목록 및 기타 유형 외에도 자체 유형을 생성하고 키워드 class를 사용하여 정의할 수도 있습니다. 예:
>>> class Person: # 这里的 self 指某个实例对象自己 ... def __init__(self, name): # name 是实例的属性 ... self.name = name # live 是类的属性 live = True
>>> p1 = Person("zhangsan") >>> p1.name 'zhangsan' >>> >>> p2 = Person("lisi") >>> p2.name 'lisi'
>>> p1 <__main__.Person object at 0x0195AA30> >>> type(p1) <class '__main__.Person'> # 这里的__main__是模块名称
클래스도 객체입니다(클래스 객체라고도 함)
지금 우리는 모든 것이 객체이고, 인스턴스(실제 자동차)는 객체이고, 클래스(몰드)는 객체라고 말했습니다. Python 인터프리터가 키워드 클래스 명령어를 실행하면 내부적으로 "Person"이라는 클래스가 생성됩니다. 우리는 이를 클래스 객체라고 부릅니다. 인스턴스 객체의 차이점) ID 식별, 유형 및 값도 있습니다. 예:
>>> id(Person) 26564024 >>> type(Person) <class 'type'> >>> Person <class '__main__.Person'>
검토해 보겠습니다. 인스턴스 객체 p1의 유형은 클래스 객체 Person이고, Person의 유형은 type
>>> nums = [1,2,3] >>> type(nums) <class 'list'> >>> type(list) <class 'type'>
메타클래스를 사용하여 클래스 만들기
前面讲到过,type 有一个作用是用于检查对象的类型,其实它还有另外一个作用就是作为元类动态地创建类(对象)。 Person 就是一个类,它等价于: 用元类 type 创建类的语法是: type(类名,基类元组(可以为空), 属性字典) 总结 以上所述是小编给大家介绍的 Python 元类实例解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关推荐:>>> Person = type("Person", (), {"live":True})
>>> Person
<class '__main__.Person'>
>>> class Person:
... live = True
...
>>> Person
<class '__main__.Person'>
위 내용은 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를 무료로 생성하십시오.

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

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

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

Dreamweaver Mac版
시각적 웹 개발 도구

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