Python 自定義元類的兩種寫法

2022-03-15 21:58:07 字數 1213 閱讀 2305

有關元類是什麼大家自己搜尋了解,我這裡寫一下實現元類的兩種寫法

#

自定義元類

#繼承type

class

lowercasemeta(type):

'''修改類的屬性名稱為小寫的元類

'''#

__new__ 類的實列的建立 #__init__類的初始化

#方法一:

def__new__

(mcs,name,bases,attrs):

lower_attrs={}

for k,v in

attrs.items():

ifnot k.startswith('

__'): #

排除magic method

lower_attrs[k.lower()]=v

else

: lower_attrs[k]=v

return type.__new__

(mcs,name,bases,lower_attrs)

#方法二:

#def __new__(cls, *args, **kwargs):

##將要替換args

#new_args=

#for arg in args:

#if isinstance(arg,dict):

#low_attrs = {}

#for k,v in arg.items():

#if str(k).startswith('__'): #magic method

#low_attrs[k]=v

#else: #排除magic method

#low_attrs[str(k).lower()]=v##

else:##

return type.__new__(cls,*new_args,**kwargs)#類

class lowercaseclass(metaclass=lowercasemeta): #

py3 bar=true

defhello(self):

print('

hello')

#此時bat,hello 都變為小寫

print

(dir(lowercaseclass))

lowercaseclass().hello()

兩種方法的執行結果相同:

Android 兩種自定義的Menu

雖然兩種方法有很多相似的地方,但是使用的方法不同,廢話不多說,帖方法了 方法一功能簡述 要實現能代替系統選單的自定義選單必須保證以下基本功能的實現 能通過menu鍵隱藏顯示選單 截獲系統menu鍵動態隱藏顯示 當獲得焦點時高亮顯示獲得焦點的選單項 實現按下選單狀態效果 能設定選單背景 能設定選單項背...

自定義dialog的兩種方式

介紹自定義對話方塊 dialog 的兩種方式 方式一 首先自定義乙個自己想要設計的對話方塊的介面布局,我的是這樣的 然後在activity類中進行展示,這裡我寫了乙個showinputpwddialog方法 輸入密碼對話方塊 private void showinputpwddialog 方式二 可...

自定義異常的兩種方式

自定義異常的兩種方式 一 丟擲異常 def greet name,city if notisinstance name,str raise typeerror name must be str if notisinstance city,str raise typeerror age must be...