【发布时间】:2021-03-17 13:37:45
【问题描述】:
在 python 中 - final 类是其他类不能继承的类,因为 various reasons(例如 - bool 类应该始终只有 2 个实例 - true 或 false)。
但是 - 就我而言,我想从 re.Match (正则表达式 Match 类)继承。问题是这个类是用 c 编写的,显然在这个类的 c-python 实现中没有启用 Py_TPFLAGS_BASETYPE 标志。
如果我愿意尝试:
class Region(re.Match): # Error: type 're.Match' is not an acceptable base type
...
我不确定为什么在这种情况下未启用此标志,但如果我至少可以尝试不受标志的限制,那就太好了。
有一种pythonic的方式来禁止继承(see)但是有没有一种python的方式来允许继承?
我可以尝试在c实现中通过enabling this flag来解决它,但我想避免它。
我也可以尝试手动将每个需要的方法和属性引用到内部匹配:re.Match 变量(也想避免这种情况)。
我正在寻找更“Pythonic”的解决方案。 有什么想法吗?
【问题讨论】:
-
即使你可以从
re.Match继承,你也不能手动__init__:re.Match()说“不能创建're.Match' 实例”。那么,您如何想象得到这样的Region实例?