![]() |
1
3
简短回答:不,没有办法隐式地调用权利
顺便说一下,这里显示的代码不正确:如果使用super()。
见 http://fuhm.net/super-harmful/ 更详细的问题描述(带图片)。 |
![]() |
2
1
您的代码与方法解析顺序无关。方法解析出现在多重继承的情况下,而不是您的示例。您的代码是错误的,因为您假定
所以当你应该打电话给:
你确实在打电话:
编辑 :试图更好地回答这个问题。
印刷品:
(修订版 template pattern )
现在父母的方法实际上是隐式调用的,但是我必须同意python zen的说法,因为代码的可读性较低,而且收益也很低,所以显式比隐式更好。但当心这一切
对于单个继承,更好的方法是显式调用父级的方法,而不调用
好的读数是: how-does-pythons-super-do-the-right-thing 以及在这个问题和特殊性中提出的联系 Python's Super is nifty, but you can't use it 如果层次结构可能发生变化,则是不良设计的症状,并且会对使用该代码的所有部分产生影响,因此不应鼓励使用该代码。 编辑2
我想到了另一个例子,但它使用元类。Urwid图书馆
uses metaclass
要存储属性,
前任:
|
![]() |
3
1
也许你要找的是元类?
打印“我是甲级学生” 元类所做的是覆盖B类(而不是对象)的初始创建,并确保每个B对象的内置字典现在包含一个基数组,您可以在其中查找B的所有基类。 |
![]() |
4
0
据我所知,以下工作并不常见。但它似乎确实有效。
给定类定义中的方法总是会破坏双下划线属性,以包括在其中定义的类的名称。因此,如果您将对名为mangled形式的类的引用存储在实例可以看到的地方,那么可以在调用
通过实现
做一件类似的事情,但是使用一个元类并存储
同时运行这些文件,作为一个源文件:
|
|
user3903342 · Java访问修饰符和调用的方法 7 年前 |
![]() |
Ratnesh Lal · 此处意外出现super关键字 8 年前 |
![]() |
Mark · Python2__bases__和超级 11 年前 |
![]() |
kharesp · 了解使用Super访问Superclass成员 11 年前 |