1
mec 2020-10-23 10:00:30 +08:00
啊 这也行,太 magic 了 感觉类的继承最好还是更显式一些吧
|
2
chogath 2020-10-23 10:03:10 +08:00
用装饰器实现不行嘛,你这整的是啥
|
3
Wincer 2020-10-23 10:18:16 +08:00
Python2 也可以做到,但是比较麻烦:
1. 首先把 cls 里面的所有类改成新式类; 2. 使用 type('NewClass', cls, attr) 的方式创建。 ``` class A(object): pass class B(object): pass class C(object): pass cls = (A, B, C) def init(self, *args, **kwargs): super(cls[0], self).__init__(*args, **kwargs) type('E', cls, dict(__init__=init)) # 这样可以创建 >>> __main__.E ``` 但是不太建议这么做,,你也看到代码多么复杂了,type 动态创建的类也不好 debug 。 |
4
xiaolinjia 2020-10-23 10:18:41 +08:00
用 types 函数创建类呗
NewClass = type('NewClass', tuple(cls), class_attrs) |