python中元類用法執行個體

來源:互聯網
上載者:User
本文執行個體講述了python中元類用法,分享給大家供大家參考。具體方法分析如下:

1.元類(metaclass)是用來建立類的類

2.type(object):返回一個對象的類型,與object.__class__的值相同,type(name,bases,dict):建立一個新的type類型,name就是新class的name,值存到__name__屬性中,bases是tuple類型,值會存到__bases__中,dict的值存到__dict__中

複製代碼 代碼如下:

class X:
... a = 1
...
X = type('X', (object,), dict(a=1))

3.類預設是用type()建立的,通過定義類時指定metaclass參數或繼承自某個類,而該類指定了metaclass參數,可以自訂類的建立過程

複製代碼 代碼如下:

class OrderedClass(type):
#該方法傳回值就是__new__的namespace參數,如果沒有該方法namespace的值就是dict()
@classmethod
def __prepare__(metacls, name, bases, **kwds):
return collections.OrderedDict()
#namespace就是class的__dict__,這個dict類型的對象已經被填充了相應的值
def __new__(cls, name, bases, namespace, **kwds):
result = type.__new__(cls, name, bases, dict(namespace))
result.members = tuple(namespace)
return result

class A(metaclass=OrderedClass):
def one(self): pass
def two(self): pass
def three(self): pass
def four(self): pass
print(A.members)
#('__module__', '__qualname__', 'one', 'two', 'three', 'four')

希望本文所述對大家的Python程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.