python - 带有类及其元类的“超级”
问题描述
签名是:super([type[, object-or-type]])
。它的文档说:
如果省略第二个参数,则返回的超级对象是未绑定的。如果第二个参数是一个对象,则
isinstance(obj, type)
必须为真。如果第二个参数是类型,则issubclass(type2, type)
必须为真(这对类方法很有用)。
根据文档,如果有人想要super(metatype, type)
,第二个参数是一个类型,所以issubclass(type, metatype)
必须是真的。但我的测试程序显示它可能是错误的:
#!/usr/bin/env python3
class M0(type):
def wtf(self):
print('M0')
class M1(M0):
def wtf(self):
print('M1')
class C0(metaclass=M1):
@classmethod
def wtf(cls):
assert issubclass(C0, M1) == False
super(M1, C0).wtf()
C0.wtf()
这是保证还是未定义?
解决方案
推荐阅读
- c - 在 C 中声明匿名结构的局部 const 变量
- bash - 查找包含至少三个字母实例的单词
- reactjs - React Hook "useDispatch" 不能在顶层调用。必须在 React 函数组件或自定义 React Hook 函数中调用 React Hooks
- arrays - Laravel:使用数组显示数据 WHEREIN 'Imploded Id'
- ios - 如何知道 AnchorEntity 动作序列何时完成?
- html - Bootstrap 将文本与复选框对齐
- visual-studio-code - 什么是 Visual Studio Code 的 Code Review 扩展
- css - 在地图中使用三元运算符,我想使用它来更改材料表的列宽
- amazon-web-services - DynamDB 在两个字段中保存自动生成的值
- javascript - 如何通知子元素作业已完成?