9得票1回答
Python:在提供参数给__init_subclass__()的同时动态创建类

如何动态创建我的类的子类并向其__init_subclass__()方法提供参数? 示例类: class MyClass: def __init_subclass__(cls, my_name): print(f"Subclass created and my na...

14得票4回答
Ruby元类混淆问题

我知道在Ruby中,所有类都是元类Class的实例。而“普通”对象则是这些类的实例(元类Class的实例)。 但我一直在想,我的意思是类是对象的根,类本身是Class类的实例(称为元类,因为它的实例是类)。我在一些博客中看到了对Class类中new方法的覆盖。 所以Class表现得像一个类...

9得票1回答
涉及枚举的多重继承元类冲突

我需要一个双重继承的类,它是一个枚举类型,但也支持我的自定义方法。 这是上下文: import abc from enum import Enum class MyFirstClass(abc.ABC): @abc.abstractmethod def func(self)...

36得票2回答
"MetaClass"、"__new__"、"cls"和"super" - 究竟是什么机制?

我阅读过像这样的文章: Python中的元类是什么? 在Python中使用元类的具体用例是什么? Python的超级函数很棒,但你不能使用它 但是我还是有些困惑。许多疑问,例如: 何时以及为什么我需要做以下类似的事情? # Refer link1 return super(MyTy...

10得票1回答
仅为子类使用元类

在 Python 3.2 或更高版本中,是否有一种方法可以定义一个类,使其子类应使用特定元类创建,而不必使用元类创建该类本身? 以下是一个例子来说明我的意思:假设我想创建一个 Enum 类,它的子类可用于定义枚举类型。枚举类型将具有固定数量的实例,每个实例都具有不同的 int(或其他)值。 ...

11得票3回答
通用元类以跟踪子类?

我正在尝试编写一个通用的元类来跟踪子类。由于我希望这是通用的,所以我不想在这个元类中硬编码任何类名,因此我想出了一个函数来生成正确的元类,例如:def make_subtracker(root): class SubclassTracker(type): def __i...

18得票2回答
元类和__prepare__()

我正在自学关于__prepare__函数的知识。在PEP3115中看到了以下代码片段: # The custom dictionary class member_table(dict): def __init__(self): self.member_names = ...

59得票2回答
元类多继承不一致性

为什么会是这样:class MyType(type): def __init__(cls, name, bases, attrs): print 'created', cls class MyMixin: __metaclass__ = MyType class...

24得票3回答
如何在Python中创建自己的“参数化”类型(例如`Optional[T]`)?

我想在Python中创建自己的参数化类型,以便在类型提示中使用: class MaybeWrapped: # magic goes here T = TypeVar('T') assert MaybeWrapped[T] == Union[T, Tuple[T]] 忽略那个刻...

11得票1回答
元类单例对象中的析构函数

我正在修改一个使用元类实现单例模式的旧库。 继承自type类的Singleton类定义了__call__函数。 目前,使用此库创建的单例对象永远不会被删除。我在单例类中定义了__del__方法,但是这个方法从未被调用。 澄清一下:我已经实现了一个名为Singleton的(元)类,它被多个...