通過元類控制類的產生

2022-08-13 16:42:13 字數 1147 閱讀 5042

自定義元類:來控制類的產生:可以控制類名,可以控制類的整合父類,控制類的命名空間

type

自定義元類必須整合type,寫乙個類繼承type 這種類都叫元類

class mymeta(type):

#def __init__(self,*args,**kwargs):

def __init__(self,name,bases,dic):

#sef就是person類

print(name)

print(bases)

print(dic)

#加限制 控制類名必須以sb開頭

if not name.startswith('sb')

raise exception('類名沒有以sb開頭')

#類必須加注釋

print(self.__dict__['__doc__'])

metaclass = mymeta 指定這個類生成的時候,用自己寫的mymeta這個元類

class person(object,metaclass=mymeta):

'''注釋

'''school = 'oldboy'

def __init__(self,name):

self.name =name

def score(self):

print('分數是100')

p =person()

class mymeta(type):

def __init__(self,name,bases,dic):

print(self.__dict__['__doc__'])

doc = self.__dict__['__doc__']

if not doc:

#沒有注釋

raise exception('你的類沒有加注釋')

class person(object,metaclass=mymeta):

'''我加了注釋

'''school = 'oldboy'

def __init__(self,name):

self.name = name

def score(self):

print('分數是100')

自定義元類控制類的建立

chinese每次建立由原來的type改為mymeta,因此可以在mymeta內對類進行一些特殊定製 示例一 類名的大小寫強控 class mymeta type def init self,class name,class bases,class dic if not class name.ist...

通過元類建立乙個Python類

最開始學python的時候我們定義類都是 class classname pass當熟悉了元類的概念之後我們可以這樣建立 classname type classname 當有父類的時候 class classname object pass等價於 classname type classname ...

元類,自定製元類的內容

元類的概念 元類是類的類,是類的模板 元類是用來控制如何建立類的,正如類是建立物件的模板一樣 元類的例項是類,正如類的例項為物件 type是python的乙個內建元類,用來直接控制生成類,python中class定義的類其實都是type類例項化的物件 產生類的兩種方式 類的產生有兩種方式,這兩種方式...