13得票2回答
模块级别的Python元类

我读了Python中元类是什么? 我试图复制这个例子中的上级元类,但发现这并不在所有情况下都起作用:def upper(cls_name, cls_parents, cls_attr): """ Make all...

37得票1回答
惯例继承元类从type吗?

我一直在尝试理解Python元类,因此一直在查看一些示例代码。据我所知,Python元类可以是任何可调用对象。因此,我可以像下面这样定义我的元类:def metacls(clsName, bases, atts): .... return type(clsName, bases...

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

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

14得票1回答
如何在Groovy的MetaClass方法中引用GroovyObject实例?

这是一个人为制造的例子,用来表达我想要做的事情,并最小化表达所需的行为。 我想引用在调用属性访问的对象实例。 我首先尝试了'this' ,但它指的是封闭类而不是MetaClass或String实例。String.metaClass.propertyMissing = { String name...

7得票1回答
为什么元类应该继承自type?

我们可以使用函数作为元类,我的理解是它们不像下面的那样派生自type: def test_meta(name, bases, atts): print("testmeta called for " + name) return type(name,bases,atts); ...

7得票2回答
移除单个元类方法

我开始学习Groovy,目前正在研究元类功能。我看到了添加新方法和删除所有方法的示例,但没有关于删除单个方法的内容。例如: String.metaClass.foo = {delegate.toUpperCase()} String.metaClass.bar = {delegate.toL...

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

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

7323得票25回答
9得票2回答
Python3中的类型子类化与对象子类化

我一直在阅读关于元类的内容,但当涉及到type和object类时,我就迷失了。 我知道它们处于层次结构的顶部,并且它们是用C代码实现的。我也明白type继承自object,并且object是type的一个实例。 在SO上我找到了答案之一,其中有人提到关于object-type关系的问题: ...

8得票1回答
为什么Groovy的map没有metaClass?

为什么Groovy的字面映射没有metaClass? // lists work as expected: aList = [] println aList.class // class java.util.ArrayList println aList.metaClass // give...