使用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高并发应用程序?   java通过Gmail API谷歌应用程序引擎发送电子邮件   JAVAutil。scanner scanner hasNextLine()无法访问Java中的最后一行   如何处理xpath、Selenium Webdriver、Java的变化   java哪种设计模式最适合避免方法中的多个参数   java运行同一应用程序的tomcat的两个实例能否为两个不同的用户创建相同的sessionId?   java播放声音对我来说不起作用   java LibGDX场景2D:对单独类中的参与者应用操作   使用SpringMVC发送html邮件的java空指针异常   java Axis2 adb和minInclusive=2147483648   java试图以随机顺序输出列表数组的文本,但我一直在使用textView时出错。setText(myList[rando]);   java Eclipse在任何子字符串上进行多行编辑,如Sublime Text和Atom   java在GWT中从属性文件动态加载值   检查用户是否输入整数或字符串   java打印具有相同字符的行中的重复字符   在phonegap应用程序中将java变量从Android活动传递到javascript   java如何在swing中将键绑定设置为可编辑JTable?   java方法修改超出范围的方法   java是链表中的节点类,特别是构造函数,并使用它创建随机整数的链表