跳转到主要内容

更简单的方法调用super方法,无需重复

项目描述

SimpleSuper Build Status

许可证: ISC - 请参阅LICENSE.txt文件

这是一段简单的代码,源于我们对在Python中调用重写方法重复性的挫败感。每次都需要写

super(TheCurrentClassThatImIn, self).the_method_that_im_currently_in(all, the, arguments, again)

这样的事情,既不遵循DRY原则,也使得重构工作更加繁琐。

如果能直接写 self.super() 那岂不是酷多了?是的,我们也这么想。

在你想使用这个(或任何超类)的类中,你需要像这样使 SuperProxy 可用

class SuperClass(object):
    super = SuperProxy()

之后你可以在任何方法中以三种形式使用它

  • 自动拾取所有可用的参数并调用当前方法的超类方法

    self.super()

  • 调用当前方法的超类方法,但带有显式参数

    self.super(some_arguments)

  • 获取超类代理并使用特定参数调用特定方法

    self.super.whatever_method(whatever, arguments)

    (self.super 与 super(CurrentClass, self) 相同,但更简洁)

已知问题

  • 仅适用于对象子类(新式类)
  • 无法找到装饰方法的超类方法,因为当前方法代码无法在类对象中按方法名称找到。

待办事项

  • 找到一种方法,以便你可以像 from simple_super import use_in_object 一样,让每个对象都通过其美好品质得到增强。

变更日志

1.0.10 (2023-01-10)

  • 放弃对 Python 3.6 以下不再由 Python 团队支持的 Python 版本的支持。
  • 添加对所有现代 Python 版本的支持,最高到 3.11

1.0.5 和 1.0.6, 1.0.7, 1.0.8, 1.0.9 (2016-09-07)

  • 为 PyPI 创建包以方便依赖
  • 进行小型清理,以便更容易在调试器中跨过此代码

1.0.4 (2010-06-06)

  • 添加启发式方法,将参数移动到 kwargs 中,如果较低方法比较高方法有更多命名参数

1.0.3 (2010-05-31)

  • 添加对 Python 3 的兼容性
  • 将独立函数移动到优秀的类中

1.0.2 (2010-03-27)

  • 简化启发式检测以判断是否调用 self.super() 或 self.super(*args, **kwargs),以便我们可以传递正确的参数
  • 使 simple_super 兼容 Python 2.3 和旧式类

1.0.1

  • 如果子类使用 self.super() 且超类除 self 之外没有其他参数,则不添加参数

1.0

  • 初始发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

simplesuper-1.0.10.tar.gz (6.0 kB 查看哈希值)

上传时间

构建分布

simplesuper-1.0.10-py3-none-any.whl (6.1 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面