61得票5回答
在定义元类时,选择使用__new__而不是__init__是否有任何理由?

我一直这样设置元类:class SomeMetaClass(type): def __new__(cls, name, bases, dict): #do stuff here 但我刚刚遇到了一个被定义成这样的元类:class SomeMetaClass(type): ...

60得票4回答
如何在Python 2.7和Python 3.5兼容的情况下使用abc.ABCMeta?

我想创建一个类,它的元类是abc.ABCMeta,并且可以同时兼容Python 2.7和Python 3.5。到目前为止,我只能在2.7或3.5上成功创建,但从未在两个版本上同时成功。有人可以帮我吗? Python 2.7: import abc class SomeAbstractCla...

60得票6回答
如何在定义类时自动注册类

我希望在类定义时就注册一个类的实例。理想情况下,下面的代码可以达到这个目的。registry = {} def register( cls ): registry[cls.__name__] = cls() #problem here return cls @register ...

59得票4回答
调用元类基类时出错:函数()参数1必须是代码,而不是字符串。

我今天早些时候尝试继承threading.Condition类,但没有成功。当我尝试继承threading.Condition类时,下面是Python解释器的输出:>>> import threading >>> class ThisWontWork(thr...

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

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

50得票7回答
如何按照声明顺序读取类属性?

我正在编写一个元类,用于读取类属性并将它们存储在一个列表中,但我希望这个列表(cls.columns)能够保持声明的顺序(也就是说,在我的示例中应该是:mycol2,mycol3,zut,cool,menfin,a):import inspect import pprint class Co...

45得票2回答
Python元类与类装饰器

Python元类和类装饰器的主要区别是什么?有没有一些只能通过其中一种方式实现的功能?

42得票2回答
三重继承导致元类冲突...有时候。

看起来我遇到了一个元类地狱,即使我不想处理它。 我正在使用PySide编写一个Qt4应用程序。我希望将基于事件驱动的部分与UI定义分离,后者是从Qt Designer文件生成的。因此,我创建了“控制器”类,但为了简化我的生活,我仍然让它们多重继承。以下是一个示例:class BaseCont...

41得票2回答
如何从类定义中向元类传递参数?

我正在尝试在Python 2.7中动态生成类,并想知道是否可以轻松地从类对象向元类传递参数。我已经阅读了这篇文章,非常棒,但并没有完全回答我的问题。目前我正在做:def class_factory(args, to, meta_class): Class MyMetaClass(typ...

40得票2回答
Python元类与常规类继承有何不同?

这可能是一个太过开放的问题,但我现在刚开始学习Python中的元类,并且我不明白元类与仅仅让子类继承父类之间有什么区别,例如class child(parent): 这样做不是与元类达到了相同的目的吗?我想也许我不理解元类的目的。