- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道为什么使用两个不同的类,而不是只对两者都使用 Class 的原因。
最佳答案
简短的回答是“您认为类是系统范围类的实例是错误的,每个类实际上都是类特定元类的实例”,而且“它不会以任何其他方式工作”。
对答案稍作修改是“名称确实令人困惑,有时只需记住它们的角色而不是过多考虑它们的工作方式会更容易”。
短毛 回复:
元类是一个实例,就像所有其他普通的 Smalltalk 类一样,它需要自己的专用类。常规 Smalltalk 对象的每个实例都有一个类,继承遵循类层次结构。每个类本身都是一个类特定元类的实例,继承遵循元类层次结构。每个元类本身都是 Metaclass 类的一个实例,它被虚拟机用一个巧妙的小技巧短路,因为没有人发现给 Metaclass 类一个父类的用途,所有尝试过的人都发现在这个过程中,他们的理智开始受到侵 eclipse 。
更长,仍然毛茸茸的答案:
Smalltalk 允许每个类包含特定于类的消息。这些大致等同于 Java 中的静态方法 - 但有一些显着差异。这些差异之一是 Smalltalk 类实际上是实例化的对象——它们是系统中的事件对象,具有从其他对象继承的能力,并包含实例变量。
此属性导致系统中潜在的大量继承层次结构。常规对象每个都是一个类的实例,消息发送到一个对象,搜索对象的类,然后跟踪类层次结构的继承链。发送到常规对象的消息在类层次结构中向上解析。
此外,类对象是一个特定于类的元类的每个实例。发送到类对象的消息通过查找类特定的元类来解析,然后在元类层次结构上向上解析。
再上一层,元类对象都是系统范围内唯一的元类类的实例。发送到元类对象的消息在系统范围的唯一元类中查找,该元类不允许从任何人继承,并且在 VM 中作为短路进行硬连接。
从技术上讲,该系统有两个继承层次结构,第三个是通过短路伪造的。尽管有很多实际的原因,但没有理论上的理由停在两点。这允许每个对象拥有它自己的、对象唯一的消息,每个类都有它自己的、唯一的类、消息,并强制所有元类只回答一组消息,在元类中定义。
整洁吧?
关于smalltalk - 为什么 Metaclasses 是 Metaclass 而不是 Class 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413626/
尝试使用类创建 GUI,但我一直遇到此错误的问题。我不确定这意味着什么,因为据我所知我只有一节课,我的错误是: Traceback (most recent call last): File "C:/
我在书中遇到过以下 groovy 脚本代码。它给我带来了一些奇怪的输出。 class Person{ def work(){ println "work()" } def spor
如果我向类添加元方法,我希望它显示在 Class.metaClass.metaMethods 中。 .但情况似乎并非如此。特别是,如果我这样做: class Example { def rea
我想知道为什么使用两个不同的类,而不是只对两者都使用 Class 的原因。 最佳答案 简短的回答是“您认为类是系统范围类的实例是错误的,每个类实际上都是类特定元类的实例”,而且“它不会以任何其他方式工
以下代码是具有一个简单表的 SqlAlchemy ORM 的非常简单的实现。 Mytable 类试图从 BaseAbstract 继承。 代码抛出以下异常: Message: metaclass co
译注:这是一篇在Stack overflow上很热的帖子。提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉
我在搜索元类在 python 中的用法时发现了这个问题。这是一个很好的问题和一个很好的答案,See Here .但是当我按照这样的例子进行操作时: class UpperAttrMetaclass(t
我在Grails插件中使用了几种类别。例如。, class Foo { static foo(ClassA a,Object someArg) { ... } static bar(C
我遇到了以下陈述: (Metaclass class) new. "Uses the new of Behavior but throws error because Metaclass class
我正在寻找有关我的这项作业的一些说明。我们应该输入该图的代码(不是询问这里的任何人),但我不明白到底发生了什么。 根据我的研究,我知道所有类都是元类的实例,但我不明白的是对象框架、上下文和图表是否应该
假设我有一个类 class Foo: def __init__(self): pass def meth1(self, *args): do_stuff
我想编写一个程序,它接受一个数字 p 作为输入,并为一个遵循整数算术模 p 的数字生成一个类型构造函数作为输出。 目前为止 def IntegersModP(p): N = type('Inte
def metaclass; class << self; self; end; end 谁能帮我破译这条线。我猜它被挤成一个的事实也无济于事。但是我才 2 天前才开始研究 ruby,我担心我可能
我正在测试 groovy.sql.Sql 元类中的运行时更改,修改 createConnection 方法。我的目标是在请求某些连接时始终调用进程。 是否有更改 protected 方法的限制?我可以
Groovy 和其他 OO 编程语言中的 Meta-Class 有什么用? 最佳答案 您可能会想到 Groovy's MetaClass : A MetaClass within Groovy def
我有以下脚本: task myTask {} class Person { Person() { Person instance = this println
我使用的是 groovy 1.7.8。 我有以下代码: public class StaticClass { public static String getStaticString(Stri
在编写单元测试用例时,有一点我需要做一些元编程来测试如下方法。 void "test method:resolver"(){ setup:"mocked resolver"
我正在使用 django-tastypie 为我的 webapp 创建一个 rest API。我想创建如下所述的类,而不用显式地全部输入它们(我有超过 100 个类) class CityResour
例如,以下不会编译 (link to typescript playground example) : declare class ClassFactory { constructor();
我是一名优秀的程序员,十分优秀!