python使用元類驗證子類

2021-08-20 22:18:02 字數 1130 閱讀 2757

元類是python比較高階的用法,簡而言之,元類就是建立類的類。

而type就是乙個元類,是用來建立類物件的類。

因此,要定義元類就要使其繼承type類。

通常情況下,開發者在使用oop的方式程式設計時,往往會用到__init__方法,即建構函式。該方法會在類初始化時執行。但是我們可以將驗證的時機提前,以至於提前到類建立之時,因此就會用到__new__方法。

class base(type):

def __new__(cls, name, param, dicts):

print(cls)

print(name)

print(param)

print(dicts)

return super().__new__(cls, name, param, dicts)

class meta(metaclass=base):

name = 'yang'

def person(self):

pass

meta()

meta

()

注意,元類中所編寫的驗證邏輯,針對的是該基類的子類,而不是基類本身

__new__()方法接收到的引數依次是:

當前準備建立的類的物件;

類的名字;

類繼承的父類集合;

類的方法集合。

class base(type):

def __new__(cls, name, bases, attrs):

# print(cls)

print(name)

print(bases)

print(attrs)

return super().__new__(cls, name, bases, attrs)

class people:

pass

class meta(people, metaclass=base):

name = 'yang'

def person(self):

return self.name

meta()

meta

(,)

使用metaclass驗證子類

coding utf 8 python2中定義metaclass,該metaclass要繼承自type,實現 new 方法 class metacls type def new meta,name,bases,class dict print meta,name,bases,class dict i...

python元類的使用 python使用元類

原文 type 動態語言和靜態語言最大的不同,就是函式和類的定義,不是編譯時定義的,而是執行時動態建立的。比方說我們要定義乙個hello的class,就寫乙個hello.py模組 當python直譯器載入hello模組時,就會依次執行該模組的所有語句,執行結果就是動態建立出乙個hello的class...

python元類的使用 Python的元類如何使用

這次給大家帶來python的元類如何使用,使用python元類的注意事項有哪些,下面就是實戰案例,一起來看一下。今天我的任務就是徹底明白什麼是元類,一起看看。要搞懂元類,我們還是先從物件說起。python 一切皆物件,這句話你一定有聽說過 現在你就聽說了 乙個數字是物件,乙個字串是物件,乙個列表是物...