使用self.super(*p,**kw)而不是super(cls,self).func(*p,**kw)

Improved-autosuper的Python项目详细描述


自动确定正确的超级对象并使用它。

这个模块定义了一个混合类- 超级的。

super返回的对象可以调用或访问属性。 如果调用它,则使用与当前方法同名的基类方法 将使用传递的参数调用。如果访问一个属性 将返回类属性。

用法示例:

import autosuper

class A (autosuper.autosuper):

    def __init__ (self, a, b):
        self.super()
        print 'A.__init__'
        print a, b

    def test (self, a, b):
        print 'A.test'
        print b, a

class B (A):

    def __init__ (self):
        self.super(1, 2)
        print 'B.__init__'
        self.super.test(3, 4)

    def test (self, a, b):
        print 'B.test'
        print a, b

B()

产生:

A.__init__
1 2
B.__init__
A.test
4 3

我们不需要在a.\uu init中调用self.super(),因为基类 是对象,但我们可以这样做。

注意,b.test从未被调用-调用到“self.super.test` 确保只搜索mro中较高类的方法来进行测试。

还要注意,调用self.super.super是一个错误 被抚养成人。

重要:假定每个方法的代码对象都是唯一的。 如果方法共享代码对象(例如 方法被分配给另一个方法)。

注意:出于性能原因,此实现修改 功能。若要禁用字节码修改,请将“修改字节码”设置为 错误

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JAXB封送字符串,具有xml值,且不转义该值   java ModelMapper转换器不工作   java像HH000412或HCANN000001这样的前缀是什么意思?   验证日期输入修复java。lang.numberformatexception错误   当表具有外键时,java Telosys代码生成失败   如何使所有派生类一起只能实例化一个实例的单例抽象基类?(爪哇)   java如何在非静态服务类中使用广播接收器   java nutch爬虫相对URL问题   使用Jboss DMR下载/保存java附件   Rest模板:无法提取响应:当我们得到xml响应时,没有找到适合响应类型的HttpMessageConverter,没有绑定到JAVA对象   java如何编写可扩展窗格/面板/卡的代码   java是在ITreeViewerListener的treeExpanded()之前调用ContentProvider的getChildren()吗?   java将JComponent添加到小程序窗格   java混淆:使用简单逻辑的Flames程序