问题标签 [metaclass]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 元类有什么用?
不能以任何其他方式使用的元类可以做什么?
Alex Martelli 告诉过这里有些任务没有元类就无法实现Python 元类与类装饰器 我想知道哪些是?
smalltalk - Smalltalk 超类与元类?
我是 OOP 新手,但有“程序”背景。
我目前正在尝试通过 GNU Smalltalk 和 Lovejoy 的“Smalltalk:获取消息”来了解 OOP。
我对元类和元类类与超类的区别感到困惑。可以看到超类->类->子类的继承流程;但我不知道元类如何/在哪里适合。TIA ...
ruby - Ruby中Base的元类和Derived类有什么关系?
在 Ruby 中,我们可以使用super
inside 单例方法来调用相应超类的单例方法,如下面的代码所示。
但是,我似乎不太明白对 inside 的调用是如何super
到达Derived.class_method
的Base.class_method
。我假设这class_method
是在他们的元类上定义的,这是否意味着他们的元类具有父/子关系?(我不能通过实验完全证实)
更新:我问这个问题是因为我记得在某处看到基类和派生类的元类之间存在某种关系(但我再也找不到它了)。除了了解实际super
工作原理之外,我还想确认这两个元类是否完全分开。
python - 习惯从类型继承元类?
我一直在尝试理解 python 元类,因此一直在浏览一些示例代码。据我了解,Python 元类可以是任何可调用的。所以,我可以有我的元类
然而,我看到很多人用以下方式编写他们的元类:
据我所知,它们都会做同样的事情。有什么理由改用基类吗?是习惯吗?
python - 修改 Python 类
我想修改 Python 中的所有类。例如 str 和 int 以及其他类似 Person(object)。
我想为它们添加一个属性并更改其方法的工作方式。
哪个是最好的方法?元类?
python - 将元类与多重继承结合使用的 TypeErrors
我有两个关于元类和多重继承的问题。第一个是:为什么我得到一个 TypeError 的类Derived
而不是Derived2
?
确切的错误信息是:
TypeError: Error when calling the metaclass bases
Cannot create a consistent method resolution order (MRO) for bases object, Klass
第二个问题是:为什么super
在这种情况下不起作用(如果我使用__init__
而不是__new__
,则super
再次起作用):
我得到:
TypeError: Error when calling the metaclass bases type.__new__(X):
X is not a type object (str)
我正在使用 Python 2.6。
c - Objective-C 运行时如何实例化根元类和其他类描述?
我正在尝试实现一个基本的面向对象的 ANSI C 运行时并使用 Objective-C 作为指南。
它们似乎是三个部分。类描述、类接口和类实现。为了实例化类接口,使用类对象实例化对象的熟悉方法只有在运行时已经使用类描述实例化了您的类对象时才会发生。
那么所有类定义在第一次运行时都是静态分配的,以提供使用类对象实例化的能力吗?或者如果它们是动态分配的(在初始调用时),如何分配?它是运行循环的一部分,还是类实际上是一个函数,在转发消息之前确定它是否已经被分配?
python - 调用元类库时出错:function() 参数 1 必须是代码,而不是 str
我今天早些时候尝试对 threading.Condition 进行子类化,但没有成功。当我尝试对 threading.Condition 类进行子类化时,这是 Python 解释器的输出:
有人可以解释这个错误吗?谢谢!
python - 类实例上的元类方法
我想知道在元类上声明的方法会发生什么。我预计如果你在元类上声明一个方法,它最终会成为一个类方法,但是,行为是不同的。例子
但是,如果我尝试定义一个元类并给它一个方法 foo,它似乎对类起作用,而不是对实例起作用。
这里到底发生了什么?
编辑:碰到问题
grails - Groovy MetaClass - 将类别方法添加到适当的元类
我在 Grails 插件中使用了几个类别。例如,
我正在寻找将这些方法添加到元类的最佳方法,这样我就不必使用类别类,而可以将它们作为实例方法调用。例如,
是否有一个 Groovy/Grails 类或方法可以帮助我做到这一点,或者我是否坚持迭代这些方法并自己添加它们?