欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中怎么創(chuàng)建一個(gè)元類

Python中怎么創(chuàng)建一個(gè)元類,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

目前累計(jì)服務(wù)客戶上千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計(jì)的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。


    什么是Python元類?

    Python元類是與Python的面向?qū)ο缶幊谈拍钕嚓P(guān)的高級功能之一。它確定類的行為,并進(jìn)一步幫助其修改。

    Python中怎么創(chuàng)建一個(gè)元類

    用Python創(chuàng)建的每個(gè)類都有一個(gè)基礎(chǔ)的Metaclass。因此,在創(chuàng)建類時(shí),您將間接使用元類。它隱式發(fā)生,您無需指定任何內(nèi)容。

    與元編程相關(guān)聯(lián)的元類決定了程序?qū)ζ渥陨磉M(jìn)行操作的能力。 學(xué)習(xí)元類可能看起來很復(fù)雜,但是讓我們先從一些類和對象的概念入手,以便于理解。

    Python中的類和對象

    類是一個(gè)藍(lán)圖,是具有對象的邏輯實(shí)體。 一個(gè)簡單的類在聲明時(shí)沒有分配任何內(nèi)存,它是在創(chuàng)建一個(gè)類的實(shí)例時(shí)發(fā)生的。

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

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

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

    Output: <class '__main__.Demo'>

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

    Python中怎么創(chuàng)建一個(gè)元類

    類為對象定義規(guī)則。同樣,元類負(fù)責(zé)為類分配行為。我們已經(jīng)知道,類是對象,就像每個(gè)對象都有一個(gè)實(shí)例一樣,類是元類的實(shí)例。

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

    Python中的動態(tài)類

    Python是一種動態(tài)編程語言,并允許在運(yùn)行時(shí)創(chuàng)建類。與C ++等其他語言不同,后者僅允許在編譯時(shí)創(chuàng)建類。在靈活性方面,Python優(yōu)于其他靜態(tài)類型的語言。

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

    但是,如果我告訴您還有另一個(gè)關(guān)鍵功能將Python與其他編程語言區(qū)分開呢?

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

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

    Output:

    Type associated is: <class 'int'>

    Type associated is: <class 'str'>

    現(xiàn)在,您了解了Python中的所有內(nèi)容都有與之關(guān)聯(lián)的類型。在下一個(gè)主題中,我們將嘗試了解元類實(shí)際上是如何工作的。

    Python元類如何工作?

    每當(dāng)創(chuàng)建一個(gè)類時(shí),都會調(diào)用默認(rèn)的Metaclass類型。 元類包含名稱,基類集以及與該類關(guān)聯(lián)的屬性等信息。因此,在實(shí)例化一個(gè)類時(shí),將調(diào)用帶有這些參數(shù)的類。可以通過兩種方法創(chuàng)建元類:

    1. 類型類

    2. 自定義元類

    讓我們繼續(xù)輸入class以及如何創(chuàng)建class。

    類型類

    Python有一個(gè)稱為type的內(nèi)置元類。與Java或C不同,那里有主要的數(shù)據(jù)類型。Python中的每個(gè)變量或?qū)ο蠖加幸粋€(gè)與之關(guān)聯(lián)的類。Python使用幕后的Type類創(chuàng)建所有類。在上一個(gè)主題中,我們看到了如何使用type()檢查對象的類。讓我們舉一個(gè)例子,說明如何通過創(chuàng)建一個(gè)簡單的類來定義新類型。

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

    Output: <class '__main__.Edureka'>

    print(type(Edureka))

    Output: <class 'type'>

    在上面的代碼中,我們有一個(gè)名為Edureka的類,以及一個(gè)關(guān)聯(lián)的對象。我們通過簡單地在該類型之后創(chuàng)建一個(gè)名為自身的類,創(chuàng)建了一個(gè)名為Edureka的新類型。在第二個(gè)代碼中,當(dāng)我們檢查Edureka類的類型時(shí),其結(jié)果為“類型”。

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

    Python中怎么創(chuàng)建一個(gè)元類

    當(dāng)我們通過類型類傳遞參數(shù)時(shí),它使用以下語法。

    type(__name__, __base__, attributes)
    • 名稱是一個(gè)字符串,并帶有類名

    • 該基礎(chǔ)是一個(gè)元組,可幫助創(chuàng)建子類

    • 屬性是字典,并分配鍵值對

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

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

    Python中的自定義元類

    現(xiàn)在我們知道并理解類型類如何工作。現(xiàn)在該學(xué)習(xí)如何創(chuàng)建自定義元類了。我們可以通過執(zhí)行動作或代碼注入來修改類的工作。為此,我們可以在創(chuàng)建類定義時(shí)將Metaclass作為關(guān)鍵字傳遞。另外,我們可以通過簡單地繼承通過此Metaclass關(guān)鍵字實(shí)例化的類來實(shí)現(xiàn)此目的。

    在創(chuàng)建新類時(shí),Python查找__metaclass__ 關(guān)鍵字。以防萬一,如果不存在。它遵循類型類層次結(jié)構(gòu)。

    Python中怎么創(chuàng)建一個(gè)元類

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

    Python中怎么創(chuàng)建一個(gè)元類

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

    讓我詳細(xì)解釋這兩種方法:

    1. __new __(): 當(dāng)用戶要在類創(chuàng)建之前定義元組字典時(shí)使用。它返回一個(gè)類的實(shí)例,并且很容易覆蓋/管理對象流。

    2. __init __():在創(chuàng)建對象并對其進(jìn)行初始化之后調(diào)用它。

    Python中的__call__是什么?

    在正式的Python文檔中,__call__方法可用于定義自定義元類。同樣,當(dāng)調(diào)用類定義自定義行為時(shí),我們可以覆蓋__prepare__之類的其他方法。

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

    請參見下一個(gè)示例:

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

    Output: 200

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

    裝飾器vs元類

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

    Python中怎么創(chuàng)建一個(gè)元類

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

    看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

    文章名稱:Python中怎么創(chuàng)建一個(gè)元類
    本文網(wǎng)址:http://aaarwkj.com/article2/goohic.html

    成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、面包屑導(dǎo)航微信小程序、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站制作、搜索引擎優(yōu)化

    廣告

    聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

    成都網(wǎng)頁設(shè)計(jì)公司
    久久99精品久久久子伦| 成人黄网站色大片免费观看| 亚洲欧美日韩精品一区二| 欧美成人精品三级在线网站| 亚洲精品一区二区三区高清 | 日本av高清视频在线观看| 国产二区日韩成人精品| 日本午夜一区二区在线观看| 亚洲精品国产精品乱码| 日本精品在线小视频| 国产不卡一区不卡二区| 韩国久久久久三级成人| 久久精品熟女亚洲av色| 久久精品噜噜噜成人av农村| 日本三级黄色免费的网站| 色综合久久天天射天天干| 国产一区国产二区中文字幕| 亚洲av日韩高清在线观看| 中文字幕在线看精品乱码| 深夜十八禁在线免费观看| 久久精品人妻一区二区| 亚洲最大黄色免费在线观看| 国产姐弟操大率悠荡笕| 黄色午夜福利在线观看| 高潮少妇水多毛多av| 日韩视频专区一区二区| 九九热精品在线观看视频| 久久亚洲天堂av丁香| 亚洲亚洲精品av在线动| 日韩一级毛一片欧美一级| 亚洲成人免费电影久久| av熟妇人妻一区二区三区| 丰满人妻视频一二三区| 在线播放国产91精品| 一区二区三区av天堂| 色婷婷丝袜一区网站| 欧美a级黄片免费在线观看| 人妻一区二区三区中文字幕| 久久精品女人天堂av免费观看| 日本三卡=卡无人区| 欧美日韩精品成人大片|