问题标签 [super]

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.

0 投票
3 回答
2902 浏览

ruby - 在由 define_method 定义的方法上调用 super

我创建了一个模型类,我在其中定义基于在用户中调用的方法(属性)(继承自模型)的方法。问题是我无法覆盖define_method定义的方法,调用super传递给定义的方法。我猜这是因为定义的方法是添加到用户本身,而不是模型,所以它实际上在超类(即模型)中没有方法。

我想这样做的原因是因为大多数属性应该直接保存到数据库中,而一些属性,如密码,需要一些额外的处理。

有什么办法可以更改代码以使其正常工作吗?我需要一种方法来覆盖动态创建的方法。

0 投票
6 回答
98768 浏览

java - 没有必要将 super() 放在构造函数中吗?

如果我不将它放在子类的构造函数中,这不是编译器自动放置的吗?

这意味着我什至不需要关心它?在一些文章中,他们把它放出来了。

如果我有一个带参数的构造函数,这将是构造函数,还是需要一个没有参数列表的构造函数?

0 投票
1 回答
874 浏览

python - Python 3 中的 super() 怪异

我知道这已经讨论过很多次了,但从来没有解释过“幕后”发生了什么。

任何人都可以详细解释为什么在最后一行代码中注释会导致引发错误吗?我知道那个 object.__init__ 不带任何参数,但是为什么在注释掉该行时代码可以工作?

0 投票
2 回答
2048 浏览

actionscript-3 - 从带有可变参数的 actionscript 构造函数调用 super()

如果构造函数将其参数作为可变参数(...),则似乎不可能创建一个仅将该可变参数传递给超类的子类。

对于普通函数,有一个与此相同情况的修复相关的问题:Wrapping a Vararg Method in ActionScipt但我无法让它与超级调用一起使用。

基类:

子类:

如果我现在打电话

我得到输出

我希望它打印出来:

除了实际将参数的处理移至子类或将其移至单独的初始化方法之外,有谁知道如何正确调用超级调用?

0 投票
3 回答
477 浏览

python - 使 super() 在 Python 的 urllib2.Request 中工作

今天下午我花了几个小时试图在我的自定义扩展中找到一个错误urllib2.Request。问题是,正如我发现的那样,使用super(ExtendedRequest, self), 因为urllib2.Request(我在 Python 2.5 上)仍然是一个旧样式类,super()无法使用。

创建具有这两个功能的新类的最明显方法,

不起作用。调用它,我留下了AttributeError: typeraise by urllib2.Request.__getattr__()。现在,在我开始并从 /usr/lib/python 复制整个urllib2.Request类之前,将其重写为

有谁知道,我怎样才能以更优雅的方式实现这一目标?(是有一个基于工作支持的新型类。)urllib2.Requestsuper()

编辑:顺便说一句:提到的 AttributeError :

0 投票
1 回答
536 浏览

java - 如何在 JRuby 中的导入 Java 类中对 super 的调用存根以进行测试

我正在使用 RSpec 和 JRuby 测试 Java 类。

在我的 RSpec 测试中,如何在导入的 Java 类中存根对 super 的调用?

例如:

我有 2 个 Java 类:

我只是想用 JRuby 测试 B.foo 中的代码,而不是 A.foo 中的代码。如何在我的 RSpec 测试中对超类方法的调用存根?

rspec 测试:

我曾尝试在 B 的类中包含一个带有新 foo 方法的模块,希望它会首先命中模块方法,但 B 仍然调用 A。插入模块技术在 Ruby 中有效,但不适用于 JRuby 和导入的 Java 类。

有什么其他想法可以消除超类方法以使我的 RSpec 测试通过?

0 投票
4 回答
4147 浏览

python - 隐式调用父类初始化器

在上面的代码中,注释掉的__init__调用似乎是进行超类初始化的普遍接受的“智能”方式。但是,如果类层次结构可能发生变化,我一直在使用未注释的形式,直到最近。

似乎在调用B上述层次结构中的超级构造函数时,B.__init__再次调用self.__class__它实际上是C,而不是B我一直假设的那样。

Python-2.x 中是否有某种方法可以在调用超级构造函数而不命名当前类(Bin in )时维护正确的 MRO(关于以正确的顺序初始化所有父类super(B, self).__init__(1, b, c))?

0 投票
4 回答
1209 浏览

php - 单例类和使用继承

我正在开发一个使用辅助类的 Web 应用程序。这些类包含各种操作的功能,例如表单处理。

有时我在我的应用程序中不止一个地方需要这些类,我现在这样做的方式是创建一个新对象。我不能传递变量,这将是太多的工作。

我想知道为此使用单例类。这样,我确信一次只有一个实例在运行。

然而,我的问题是,当我使用这种模式时,我是否应该为所有对象创建一个单例类,这会导致大量代码复制。

我是否可以创建一个 superHelper 的超类,它是一个单例类,然后让每个助手扩展它。

这种设置会起作用吗,还是有另一种选择?

如果它有效,是否有人对如何编写这样的 superHelper 类有任何建议。

感谢你们

0 投票
2 回答
629 浏览

iphone - 使用多个表视图类的超级释放错误

我是 Iphone 应用程序的新手,我正在尝试构建一个基于标签的应用程序。我试图在两个选项卡中的图像顶部都有一个表格。在带有音频链接表的选项卡上和带有视频链接表的另一个选项卡上。

这一切都很顺利,我为这两个表创建了两个视图控制器。除了让它工作之外,所有代码都很好用,我必须在第二个选项卡的 videoTableViewController 中注释掉 - (void)dealloc {} 中的超级 dealloc。

如果我没有收到错误消息:

FREED(id): 消息 numberOfSectionsInTableView: 发送到释放对象

请帮忙,我不知道为什么会这样......

0 投票
1 回答
8597 浏览

ruby - 构造函数重写

我有一堂课:

我需要使用自己的构造函数创建一个新类,如下所示:

但是当我启动代码时,出现错误: