将神奇的零参数super()反向移植到python2

autosuper的Python项目详细描述


这是一个(可怕的,黑的,wtf你在想)尝试移植魔法 从python3到python2的零参数super()调用

在super()内置函数的标准python2用法中,必须重复 调用super时类和实例对象,如下所示:

class Hello(Base):
def hello(self):
super(Hello,self).hello()

使用autosuper,您可以从python3获得更友好的行为 只需在运行时找出正确的调用:

class Hello(Base):
def hello(self):
super().hello()

当然,如果您想这样做,您仍然可以显式地传递参数 奇怪的事。有时候你真的很想这样,比如跳过 方法解析顺序中的某些类

它是如何工作的?通过检查调用帧来确定函数 执行的对象和调用它的对象,然后 遍历对象的mro链以找出该函数的位置 定义。很难受,但似乎很管用

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

推荐PyPI第三方库


热门话题
java应该考虑使用DTO来代替Spring控制器层吗?   java为什么要将Maven与Git结合起来?   java试图将CSV转换为XLSX,但使用了错误的逗号拆分列   mysql Spring 3+Hibernate:java。sql。BatchUpdateException:无法添加或更新子行(ManyToMany)   java基本字符串反转器   java无法使用RestControllerAdvice为身份验证失败生成自定义错误消息   java当只允许SQLException时,如何抛出EOFEException?   java如何创建播放模块?   Android中匿名类的java实例化异常问题   java两个停靠组件,其中第二个组件填充剩余空间   java如何在按钮延迟时启用它   Java中正在运行的应用程序中的后台进程   java我正试图从一个字符串打印出这个字符输出   如何使用java socket通过两个不同的wifi连接两台电脑?   javaapachecamel:如何将分层数据从数据库转换为pojo   java Webrtc:OniconConnectionChange和onConnectionChange之间有什么区别   java如何重写已经创建的JTable方法   爪哇扫雷机堆垛机   雅加达ee Java ee EJB 3.0 Glassfish