python - __init__ 可以在调用 super 后自动执行代码吗?
问题描述
我有这样的事情:
class SuperClass(object):
def __init__(self):
# initialization stuff
def always_do_this_last(self):
# cleanup stuff
class SubClass(SuperClass):
def __init__(self):
super().__init__()
# intermediate stuff
self.always_do_this_last()
是否可以自动调用最后一行?每个SuperClass
需求子类都执行清理。
解决方案
而不是覆盖__init__
,定义一个SuperClass.__init__
将调用的方法。
class SuperClass(object):
def __init__(self):
# do some stuff
self.child_init()
self.cleanup()
def cleanup():
...
def child_init(self):
pass
class SubClass(SuperClass):
def child_init(self):
...
您可以定义SuperClass.__init_subclass__
以确保child_init
被覆盖,或使用abc
模块制作SuperClass.child_init
抽象方法
推荐阅读
- node.js - 我的请求正文没有(?)进入我的应用程序
- .net - 如何为不同的环境发布 .NET Core + Angular 单页应用程序?
- laravel - 如何在 Dusk 测试中选择多个复选框
- javascript - 根据带有占位符的模式过滤字符串数组
- ruby-on-rails - 如何将多个复选框值保存到字符串?
- python - 根据多个字段的文本匹配和条件创建新字段。Python
- python - Python字符串在循环中没有正确清除
- r - 用R中的gArea和gIntersection误差计算多边形相交面积
- asp.net-core-mvc - 持久化控制器和视图之间的键/值对列表
- python - 添加变量作为绘图图标题错误