18得票4回答
如何在Python 3.x中从类定义中向元类传递参数?

这是一个 Python 3.x 版本的问题:How to pass arguments to the metaclass from the class definition?,因为答案与 Python 2.x 明显不同而被单独列出。 在 Python 3.x 中,我该如何向元类的__pr...

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

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

18得票4回答
一个`classmethod`和一个元类方法有什么区别?

在Python中,我可以使用@classmethod装饰器创建一个类方法:>>> class C: ... @classmethod ... def f(cls): ... print(f'f called with cls={cls}...

17得票5回答
Delphi类引用...也称元类...何时使用它们

我已经阅读了官方文档,了解了类引用是什么,但是我不明白相较于其他替代方案,何时何地使用它们是最佳方案。 文档中引用的示例是TCollection,可以使用任何TCollectionItem的后代来实例化。使用类引用的理由是,它允许您调用在编译时(我假设这是TCollection的编译时)未知...

17得票5回答
有人在Python/其他语言中使用元元类/元元元类吗?

我最近在python中发现了元类。 基本上,python中的元类是创建类的类。有许多有用的原因为什么你会想这样做 - 例如任何类型的类初始化。在工厂中注册类、属性复杂验证,更改继承如何工作等。所有这些不仅变得可能,而且简单。 但是在python中,元类也是普通的类。所以,我开始思考抽象是否...

16得票2回答
为一个类覆盖__contains__方法

我需要在Python中模拟枚举,我是通过编写类来实现的,例如:class Spam(Enum): k = 3 EGGS = 0 HAM = 1 BAKEDBEANS = 2 现在我想测试某个常量是否是特定枚举类的有效选择,使用以下语法:if (x in Foo)...

15得票1回答
何时在Python中内联元类的定义?

今天我在Python中遇到了一个关于元类的令人惊讶的定义,这里有详细说明,并且元类的定义被内联了。 相关部分如下:class Plugin(object): class __metaclass__(type): def __init__(cls, name, bases...

15得票3回答
在Python中将基类添加到现有对象

我有几个不同种类的对象(不同的函数名称,不同的签名),我对它们进行了“猴子补丁”,以使它们具有从不同函数中访问它们的共同方式。简单来说,有一个分发器,它接受我想要修补的对象,并根据对象类型调用不同的修补程序。修补程序将添加方法到对象中:def patcher_of_some_type(obje...

15得票1回答
需要了解__init__、__new__和__call__的执行顺序。

class Singleton(type): def __init__(self, *args, **kwargs): print 'calling __init__ of Singleton class', self print 'args: ', a...

15得票1回答
避免在不同的Groovy脚本之间共享Java元类。

我的情况 我从Java中调用多个Groovy脚本,它们都包含长期存在的Groovy对象。 我希望我的Groovy脚本对一个Java类的Java元类进行一些更改(该类大约有100个实例)。但是,脚本应该能够进行不同的更改,并且一个脚本中的更改不应该反映在其他脚本中。 问题:Java类的元类...