7323得票25回答
1655得票40回答
在Python中创建单例模式

这个问题并不讨论单例设计模式是否可取,是否是反模式或任何宗教战争,而是讨论如何以最符合Python风格的方式实现此模式。在这种情况下,我将“最符合Python风格”定义为遵循“最小惊奇原则”。 我有多个类需要成为单例(我的用例是一个记录器,但这不重要)。我不希望在几个类中添加额外的内容,而是...

1006得票6回答
class << self idiom in Ruby

class &lt;&lt; self在Ruby中的作用是什么?

174得票21回答
元类有哪些具体的使用场景?

我有一个朋友喜欢使用元类,并经常将其作为解决方案。 我认为你几乎不需要使用元类。为什么呢?因为我想,如果你要对一个类做类似的事情,那么可能应该对一个对象做这件事情。此时需要进行小型重构。 能够使用元类导致许多人在许多地方将类用作第二类对象,这对我来说似乎是灾难性的。编程会被元编程替代吗?类...

123得票5回答
理解 __init_subclass__

我终于升级了我的 Python 版本并发现了其中新增的新特性。除了其他的东西之外,我还在探索新的 __init_subclass__ 方法。根据文档: 每当包含的类被子类化时,就会调用此方法。cls 现在是新的子类。如果将其定义为普通实例方法,则此方法隐式转换为类方法。 于是我开始...

91得票1回答
理解Python中的元类和继承

关于元类,我有些困惑。 通过继承class AttributeInitType(object): def __init__(self,**kwargs): for name, value in kwargs.items(): setattr(self...

88得票6回答
解决元类冲突

我需要创建一个类,根据某些条件使用不同的基类。对于某些类,我得到了臭名昭著的:TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metac...

73得票6回答
使用元类的 __call__ 方法而不是 __new__ 方法?

讨论元类时,文档中说明: 你当然也可以覆盖其他类方法(或添加新的方法);例如在元类中定义自定义的 __call__() 方法允许在调用类时进行自定义行为,例如不总是创建一个新实例。 [编辑注:这段内容已在3.3中从文档中删除。在3.2中可以找到此处:自定义类创建] 我的问题是:假设我想在调...

66得票2回答
Python子类检查和子类钩子

__subclasscheck__和__subclasshook__方法用于确定一个类是否被视为另一个类的子类。但是,它们的文档非常有限,即使是在高级Python书籍中也是如此。它们应该如何使用,它们的区别是什么(更高的优先级、它们所指的关系的方向等)?

62得票2回答
Python元类:理解'with_metaclass()'

我想问在类的定义中,with_metaclass()调用的含义是什么。 例如:class Foo(with_metaclass(Cls1, Cls2)): 一个类从元类继承是一种特殊情况吗? 新的类也是元类吗?