日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解如何創建Python元類

瀏覽:62日期:2022-06-18 18:47:57
目錄什么是Python元類?Python中的類和對象Python中的動態類Python元類如何工作?類型類Python中的自定義元類Python中的__call__是什么?裝飾器vs元類什么是Python元類?

Python元類是與Python的面向對象編程概念相關的高級功能之一。它確定類的行為,并進一步幫助其修改。

詳解如何創建Python元類

用Python創建的每個類都有一個基礎的Metaclass。因此,在創建類時,您將間接使用元類。它隱式發生,您無需指定任何內容。

與元編程相關聯的元類決定了程序對其自身進行操作的能力。 學習元類可能看起來很復雜,但是讓我們先從一些類和對象的概念入手,以便于理解。

Python中的類和對象

類是一個藍圖,是具有對象的邏輯實體。 一個簡單的類在聲明時沒有分配任何內存,它是在創建一個類的實例時發生的。

通過創建的對象,可以訪問該類。該類僅用作模板。對象的屬性本質上意味著我們可以在運行時與它進行交互,傳遞諸如變量之類的參數,進行存儲,修改,也可以與它進行交互。

可以使用__class__屬性檢查對象的類。讓我們看一個簡單的例子:

class Demo:pass #This is a class named demo test=Demo()print(test.__class__) #shows class of objprint(type(test)) #alternate method

Output: <class ’__main__.Demo’>

Python大量處理類和對象的概念,并允許輕松,順利地進行應用程序開發。但是,什么使Python與Java和C這樣的語言不同呢?Python中的所有內容都可以定義為具有屬性和方法的對象。主題演講是Python中的類不過是更大類的另一個對象。

詳解如何創建Python元類

類為對象定義規則。同樣,元類負責為類分配行為。我們已經知道,類是對象,就像每個對象都有一個實例一樣,類是元類的實例。

但是也有像Ruby和Objective-C這樣的語言也支持元類。那么,是什么使Python Metaclass更好,為什么還要學習它呢?答案是Python中的動態類。讓我們仔細看看。

Python中的動態類

Python是一種動態編程語言,并允許在運行時創建類。與C ++等其他語言不同,后者僅允許在編譯時創建類。在靈活性方面,Python優于其他靜態類型的語言。

動態和靜態類型語言之間的差異并不大, 但是在Python中,它由于提供元編程而變得更加有用。

但是,如果我告訴您還有另一個關鍵功能將Python與其他編程語言區分開呢?

諸如Java或C ++之類的語言具有float,char,int等數據類型,而Python將每個變量視為對象。每個對象都屬于一個類,例如int類或str類。您可以使用稱為type()的內置函數來簡單地檢查任何變量的類。

number = 10993print('Type associated is:', type(number))name = 'Aishwarya'print('Type associated is:', type(name))

Output:

Type associated is: <class ’int’>

Type associated is: <class ’str’>

現在,您了解了Python中的所有內容都有與之關聯的類型。在下一個主題中,我們將嘗試了解元類實際上是如何工作的。

Python元類如何工作?

每當創建一個類時,都會調用默認的Metaclass類型。 元類包含名稱,基類集以及與該類關聯的屬性等信息。因此,在實例化一個類時,將調用帶有這些參數的類。可以通過兩種方法創建元類:

類型類 自定義元類

讓我們繼續輸入class以及如何創建class。

類型類

Python有一個稱為type的內置元類。與Java或C不同,那里有主要的數據類型。Python中的每個變量或對象都有一個與之關聯的類。Python使用幕后的Type類創建所有類。在上一個主題中,我們看到了如何使用type()檢查對象的類。讓我們舉一個例子,說明如何通過創建一個簡單的類來定義新類型。

class Edureka():obj = Edureka() print(type(obj))

Output: <class ’__main__.Edureka’>

print(type(Edureka))

Output: <class ’type’>

在上面的代碼中,我們有一個名為Edureka的類,以及一個關聯的對象。我們通過簡單地在該類型之后創建一個名為自身的類,創建了一個名為Edureka的新類型。在第二個代碼中,當我們檢查Edureka類的類型時,其結果為“類型”。

因此,除非另有定義,否則元類使用類型類來創建所有其他類。我們可以通過兩種方法訪問Type類:

詳解如何創建Python元類

當我們通過類型類傳遞參數時,它使用以下語法。

type(__name__, __base__, attributes) 名稱是一個字符串,并帶有類名 該基礎是一個元組,可幫助創建子類 屬性是字典,并分配鍵值對

由于Python中的類的行為與對象相似,因此可以用相同的方式更改其行為。我們可以在類內添加或刪除方法,類似于對對象的處理方式。

現在您已經知道Metaclass在Python中創建了所有其他類,并使用類型class定義了它們的行為。但是,您一定想知道,我們還有其他方法可以創建元類嗎?因此,讓我們看看如何創建一個自定義的元類。

Python中的自定義元類

現在我們知道并理解類型類如何工作?,F在該學習如何創建自定義元類了。我們可以通過執行動作或代碼注入來修改類的工作。為此,我們可以在創建類定義時將Metaclass作為關鍵字傳遞。另外,我們可以通過簡單地繼承通過此Metaclass關鍵字實例化的類來實現此目的。

在創建新類時,Python查找__metaclass__關鍵字。以防萬一,如果不存在。它遵循類型類層次結構。

詳解如何創建Python元類

Python在命名空間中執行所有字典后,將調用類型對象,后者創建類的對象。我們可以使用兩種方法來創建自定義元類。

詳解如何創建Python元類

class EduFirst(type):def __new__(cls, name, base_cls, dict):passclass EduSecond(type):def __init__(self, name, base_cls, dict):pass

讓我詳細解釋這兩種方法:

__new __():當用戶要在類創建之前定義元組字典時使用。它返回一個類的實例,并且很容易覆蓋/管理對象流。 __init __():在創建對象并對其進行初始化之后調用它。Python中的__call__是什么?

在正式的Python文檔中,__call__方法可用于定義自定義元類。同樣,當調用類定義自定義行為時,我們可以覆蓋__prepare__之類的其他方法。

就像類如何像創建對象的模板一樣,元類也像類創建模板一樣。因此,元類也稱為類工廠。

請參見下一個示例:

class Meta(type):def __init__(cls, name, base, dct):cls.attribute = 200class Test(metaclass = Meta):passTest.attribute

Output: 200

元類允許自定義類。還有多種其他有效且簡單得多的方法可以通過這些方法實現相同的輸出。這樣的例子之一就是使用裝飾器。

裝飾器vs元類

Decorator是Python的一項流行功能,它允許您向代碼中添加更多功能。裝飾器是可調用的對象,可幫助修改現有的類甚至函數。在編譯期間,部分代碼將調用并修改另一部分。此過程也稱為元編程。

詳解如何創建Python元類

def decorator(cls):class NewClass(cls):attribute = 200 return NewClass@decoratorClass Test1: pass@decorator Class Test2: passTest1.attribute Test2.attribute

Output: 200

Python中的Decorator是一個非常有用且功能強大的工具,可幫助您更改函數的行為,而無需實際更改任何代碼。 當您要在調試時修改程序的一部分而不是重寫函數或更改整個程序時,這非常方便。取而代之的是,您只需編寫一個單行裝飾器,其余的就由它來處理。

以上就是詳解如何創建Python元類的詳細內容,更多關于如何創建Python元類的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
正在播放日韩精品| 日韩成人精品一区二区三区| 蜜臀精品久久久久久蜜臀| 91欧美国产| 精品国产aⅴ| 日本一二区不卡| 日韩欧美国产精品综合嫩v| 麻豆视频一区二区| 美女国产精品久久久| 麻豆中文一区二区| 成人一区而且| 久久精品国产亚洲夜色av网站| 青青久久av| 亚洲女同中文字幕| 亚洲精品在线影院| 成人羞羞在线观看网站| 激情久久久久久| 日本 国产 欧美色综合| 91麻豆精品| av中文资源在线资源免费观看| 99久久婷婷这里只有精品| 免费日韩av片| 国产一区三区在线播放| 亚洲午夜久久久久久尤物| 亚洲免费影视| 国产精品免费精品自在线观看| 97精品一区二区| 视频一区二区三区在线| 国产精品一区二区三区av| 久久一区亚洲| 午夜影院欧美| 国产精久久久| 国产精品毛片| 国产毛片精品| 亚洲精品99| 欧美日韩亚洲一区在线观看| 国语精品一区| 亚洲一区二区三区四区五区午夜 | 国产视频一区二| 欧美精品高清| 日韩激情网站| 欧美日韩国产亚洲一区| 麻豆精品在线视频| 在线精品一区二区| 久久久久久久久丰满| 国产精品巨作av| 日韩高清电影一区| 免费中文字幕日韩欧美| 久久精品欧美一区| 精品久久在线| 久久国产乱子精品免费女| 美女91精品| 美女久久久久| 91精品韩国| 国产黄大片在线观看| 欧美另类中文字幕| 天堂av在线一区| 青青久久av| 精品国产第一福利网站| 久久午夜影院| 欧美国产极品| 精品国产亚洲一区二区三区大结局| 欧美一级一区| 日韩一二三区在线观看| 亚洲精选成人| 亚洲精品第一| 日本亚洲不卡| 欧美日韩一区自拍| 国产麻豆一区二区三区| 日本少妇精品亚洲第一区| 久久成人国产| 日韩一区二区三区精品| 人人精品久久| 国产精品白丝一区二区三区| 国产美女久久| av在线资源| 欧美91精品| 免费精品视频| 91精品国产经典在线观看| 麻豆国产一区| 国产a亚洲精品| 99免费精品| 中文字幕日韩高清在线| 国产午夜一区| 99久久激情| 99国产精品| 国产欧美日韩视频在线| 日韩大片在线播放| 石原莉奈一区二区三区在线观看| 亚洲精品一二| 成人亚洲精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩av一区二区三区四区| 国产videos久久| 亚洲婷婷丁香| 日韩精品2区| 亚洲精品免费观看| 日韩欧美另类一区二区| 亚洲乱码久久| 日韩一区电影| 日韩中文一区二区| 在线观看精品| 国产精品亚洲四区在线观看 | 久久久久国产一区二区| 亚洲精品国产精品粉嫩| 中国字幕a在线看韩国电影| 久色成人在线| 亚洲精品88| 国产精品扒开腿做爽爽爽软件| 久久精品卡一| 国产精品115| aa亚洲婷婷| 日韩不卡一区| 日韩av一级片| 在线一区欧美| 99国产精品免费视频观看| 精品国产一区二| 免费精品一区| 欧美精品三级在线| 亚洲乱亚洲高清| 美女国产精品| 九九久久电影| 久久久久久久久丰满| 国产在线日韩精品| 精品资源在线| 老牛国内精品亚洲成av人片| 综合亚洲自拍| 亚洲欧美日韩国产一区二区| 欧美美女一区| 91成人超碰| 激情久久久久久久| 午夜国产一区二区| 欧美日韩国产一区精品一区| 免费不卡中文字幕在线| 五月天久久777| 欧美日韩视频一区二区三区| 久久美女精品| 亚洲男女自偷自拍| 深夜日韩欧美| 九九99久久精品在免费线bt| 视频在线不卡免费观看| 精品久久精品| 欧美日韩国产v| 五月综合激情| 亚洲欧美专区| 欧美亚洲三级| 国产精品毛片一区二区在线看| 日本高清不卡一区二区三区视频| 99久久久国产精品美女| 不卡av一区二区| 综合欧美亚洲| 美腿丝袜亚洲三区| 亚洲一级高清| 欧美一级二区| 999国产精品永久免费视频app| 久久国产精品久久久久久电车| 三级亚洲高清视频| 国产极品嫩模在线观看91精品| 成人日韩av| 国产亚洲一级| 青青草国产精品亚洲专区无| 天堂中文在线播放| 中文字幕日韩亚洲| 日产精品一区二区| 日本一区二区三区视频在线看| 久久gogo国模啪啪裸体| 国产综合亚洲精品一区二| 久久精品xxxxx| 影音国产精品| 日韩欧美看国产| 97se亚洲| 欧美日韩精品免费观看视欧美高清免费大片 | 亚洲综合精品| 另类欧美日韩国产在线| 午夜久久一区| 国产一区二区三区四区| 亚洲激情av| 欧美羞羞视频| 久久av资源| 亚洲我射av| 久久九九99| 日韩国产欧美在线视频| 成人黄色av| 国产精品nxnn| 日韩中文字幕在线一区| 欧美美女一区| 色在线中文字幕| 久久精品福利| 欧美精品中文| 色8久久久久| 久久九九精品| 你懂的国产精品| 视频一区二区三区中文字幕| 久久五月天小说| 91欧美国产| 精品视频在线观看网站| 日韩精品一区第一页| 欧美在线亚洲| 久久精品国产www456c0m| 国产网站在线|