這篇文章主要介紹了Python 元類實例解析,此文的主要任務就是給大家徹底講明白什麼是元類,需要的朋友可以參考下
龜叔發明了Python,然後整合了一堆概念在這門語言裡面,例如:迭代器,裝飾器,函數,生成器,類,對象,協程等等。
這些概念對初學者似乎沒一個好懂的,不過還有比這更難的概念,它是Python 世界中的造物主,雖然我們很少去直接使用它,但天天都在用,它就是今天的主角------元類。
今天我的任務就是徹底明白什麼是元類,一起看看。
要搞懂元類,我們還是先從物件說起。
物件(Object)
Python 一切皆對象,這句話你一定聽過(現在你就聽說了) ,一個數字是對象,一個字串是對象,一個列表是對象,一個字典是對象,例如:
>>> i = 10 >>> s = "abc" >>> nums = [1,2,3] >>> dicts = {"name":"zhang"}
標識
標識就和人的身分證ID一樣,每個物件都有唯一ID標識,在整個生命週期中都不會變,你可以認為標識是這個物件在電腦記憶體中的位址。透過函數 id() 可以查看物件的ID識別。>>> id(i) 40592592 >>> id(s) 44980584
#物件值
物件的第二個屬性是值,值很好理解,例如i 的值是10,s 的值是abc,nums 的值就是1,2,3。類型
物件還有一個很重要的屬性就是類型,任何物件都有屬於自己的類型,物件就是由它的類型建構出來的,例如上面的i 的類型是int 類型,這個物件就是由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 解釋器執行到關鍵字class 這個指令的時候,在內部就會創建一個名為"Person" 的類,這個類也是個對象,我們稱為類對象(注意區別實例對象),它一樣有ID標識、有型別、有值。例如:>>> id(Person) 26564024 >>> type(Person) <class 'type'> >>> Person <class '__main__.Person'>
>>> nums = [1,2,3] >>> type(nums) <class 'list'> >>> type(list) <class 'type'>
用元類別建立類別#
前面讲到过,type 有一个作用是用于检查对象的类型,其实它还有另外一个作用就是作为元类动态地创建类(对象)。
>>> Person = type("Person", (), {"live":True}) >>> Person <class '__main__.Person'>
Person 就是一个类,它等价于:
>>> class Person: ... live = True ... >>> Person <class '__main__.Person'>
用元类 type 创建类的语法是:
type(类名,基类元组(可以为空), 属性字典)
总结
以上所述是小编给大家介绍的 Python 元类实例解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关推荐:
以上是Python 元類別實例解析_python的詳細內容。更多資訊請關注PHP中文網其他相關文章!

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。