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