更简单的方法调用super方法,无需重复
项目描述
SimpleSuper 
许可证: 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 查看哈希值)
关闭
简单的super-1.0.10.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 07923e8a0d0d4428cffed6ce4fd855a15134d3ed02a018915cff57aa4b1879b1 |
|
MD5 | 851238043d3efbf12b629495cc358bc8 |
|
BLAKE2b-256 | 65ffca44da7ce5662d94af8c2bbc5ba84a15f85eadff9dbe319af31e1ca52bf1 |
关闭
simple_super-1.0.10-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5e3d723ba07d627e9446d028eb950fa08d29a178705780286f79b5fa280ede11 |
|
MD5 | cf6601406224acd353bb1dc77e04036c |
|
BLAKE2b-256 | 5bc5785f7b6e4bff1f32a8f2479b3ed3a3b1d72408bc6645908ebd63af7e9cc5 |