이 글에서는 주로 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 元类实例解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关推荐: 위 내용은 Python 메타클래스 인스턴스 분석_python의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!>>> Person = type("Person", (), {"live":True})
>>> Person
<class '__main__.Person'>
>>> class Person:
... live = True
...
>>> Person
<class '__main__.Person'>