python - 在 python 2.7 中使用 __init_subclass__ 的替代方法
问题描述
1- BaseClass.py
--->
class BaseClass:
request_mapper = {}
def __init_subclass__(cls, data_validation_case_name=None, **kwargs):
#super().__init_subclass__(**kwargs)
if data_validation_case_name is None:
data_validation_case_name = cls.__name__
print("data_validation_case_name=[{}]".format(data_validation_case_name))
print("Type of cls is =[{}]".format(type(cls)))
cls.request_mapper[data_validation_case_name] = cls
@classmethod
def get_class_for_data_validation_case_name(cls, data_validation_case_name):
if data_validation_case_name in cls.request_mapper:
return cls.request_mapper[data_validation_case_name]
else:
raise NotImplementedError
2 ChildClass.py
----->
from BaseClass import BaseClass
class count_check(BaseClass):
@classmethod
def execute(cls,self):
print('count_check_execute')
return
class duplicate_check(BaseClass):
def execute(self):
print('duplicate_check_execute')
return
3- call_main.py
--->
import BaseClass
from ChildClass import *
list_of_cases=['count_check','duplicate_check']
if __name__ == "__main__":
for validation_case_name in list_of_cases:
child_validation_class = BaseClass.get_class_for_data_validation_case_name(validation_case_name)
child_validation_class.execute(child_validation_class)
4- __init__.py
--->
我有四个文件作为一个包,我正在运行 call_main.py。当我使用 python 3.7 运行它时,它给了我一个输出,但没有使用 python 2.7,因为__init_subclass__()
python 2 不支持它。
有没有另一种方法可以在 python 2 中做类似的事情
解决方案
推荐阅读
- javascript - 提交表单后重定向到新页面,显示内容并下载文件
- javascript - 在 Array of Arrays 中找到属性名称并更改(删除)它时,您将如何搜索?
- sql - 为什么将表达式转换为数据类型 int 的算术溢出错误会自行解决?
- python - 如何在 OR 列表正则表达式中找到尽可能少的捕获组
- sql - 获取不同的值sql server 2016
- sql - 获取同一列的当前数据和上个月数据
- r - 将 (+) 1 添加到数据框中有 0 的每一行
- node.js - Mongodb创建对象的副本
- java - 更新到 sdk 版本 23 后,我的应用程序因一些浮动操作按钮错误而崩溃?
- javascript - 是否可以对继承进行建模?