metaclass

    0熱度

    1回答

    我知道__slots__做什麼,它應該用於什麼。 但是,我還沒有找到一個全面的答案,如何使用__slots__創建的member描述符的下層機制的作品。 對象級別的值在哪裏實際存儲? 有沒有辦法改變這些值,而不直接屬性訪問描述符? (例如:上課時C有__dict__你可以做C.__dict__['key']代替C.key) 通過創建類似的類級別的描述可以在一個「擴展」 __slots__對象定義的

    1熱度

    2回答

    我想在Python中創建自己的參數化類型爲類型提示使用: class MaybeWrapped: # magic goes here T = TypeVar('T') assert MaybeWrapped[T] == Union[T, Tuple[T]] 不要介意人爲的例子;我怎樣才能實現這個?我查看了Union和Optional的源代碼,但它看起來像是我想避免的一些相當低

    0熱度

    1回答

    我有一個元素Enum,它從抽象元素Type中衍生出來。 此類型擴展Metaclass DataType,這對我來說是必需的。 現在可以擴展Enum,但不能從這個DataType擴展嗎? 我只能添加另一個Metaclass並從中擴展Enum。但是在導出配置文件圖後,我有兩個不同的元素:一個基於DataType,一個基於枚舉。 我只想要最後一個! 你能幫我解決嗎?謝謝!

    -1熱度

    1回答

    我正在尋找一種方法來調用類實例上的魔術方法。就我而言,我想根據屬性調用類的哈希值。我發現了元類的解決方案,但我無法從元類的方法訪問類屬性。 class X(type): @classmethod def __hash__(cls): return hash(cls.x) class Y(metaclass=X): x = (1, 2, 3) asse

    5熱度

    1回答

    我有一個抽象類,Model,有幾個抽象方法,我應該在方法體中放什麼? 一個返回 class Model(metaclass=ABCMeta): @abstractmethod def foo(self): return 甲通 class Model(metaclass=ABCMeta): @abstractmethod def foo(self): pa

    1熱度

    3回答

    我最近偶然發現了Python中的元類,並決定使用它們來簡化某些功能。 (使用Python 3.5) 簡而言之,我正在編寫一個模塊來定義類,例如必須註冊和初始化的「組件」類(我的意思是我需要初始化實際的類,而不是實例)。 我可以很容易地註冊類: class MetaComponent(type): def __init__(cls, *args, **kargs): super

    1熱度

    1回答

    我正在嘗試構建一個元類,我只是在想我真的懂了它。我想爲這個元類的每個實例都有類方法。 class MyMeta(type): """A metaclass""" def __new__(mcs, name, bases, attributes): pass def _foo(cls): pass def _bar(cls):

    0熱度

    3回答

    我試圖實現單班爲我的項目和一個有趣的帖子在StackOverflow上在同一 Creating a singleton in Python 我決定去與方法中提到的元類.. 現在..我試着添加一個方法來獲取和清除實例(如果用戶希望擺脫當前實例,並創建一個新的..): class Singleton(type): _instances = {} def __call__(cls,

    1熱度

    1回答

    我在教我自己關於__prepare__函數。我看到這個片段在PEP3115 # The custom dictionary class member_table(dict): def __init__(self): self.member_names = [] def __setitem__(self, key, value): # if the k

    0熱度

    1回答

    類可以繼承.. class Base: def __init__(self,name): self.name = name class Derived1(Base): def __init__(self,name): super().__init__(name) class Derived2(Base): def __init__(s