我可以使用元類初始化具有名稱的名稱嗎?它是否安全?我可以使用Python中的元類初始化具有名稱的名稱嗎?它是否安全?
class MetaA(type):
def __new__(metaCls, name, bases, clsDict):
clsDict['_%s__counter' % name] = 0
return super(MetaA, metaCls).__new__(metaCls, name, bases, clsDict)
class A(object):
__metaclass__ = MetaA
我搜索了,沒有找到明確的解釋。我經常使用損壞的名稱,但很少使用元類,並且不確定它是否有效。'_%s__%s' % (className, attrName)
- 它可以工作,但可能不兼容。
@Blckknght元類就像類的工廠,所以你可以使用元類創建許多類,而不是重複代碼或控制代碼鏡像,所以它是避免錯誤的好模式,但它並不經常需要。你不能用OOD實現某些方面,如每個類的單獨初始化類變量不共享它 - 這是不可能的,因爲繼承是不可能的,或者需要爲每個類添加一些代碼來重新初始化某些共享變量以使其不共享(即線程鎖以避免死鎖)。 – Chameleon