1# mode: run 2# tag: pyclass 3 4class A(object): 5 x = 1 6 7class B(object): 8 x = 2 9 10 11def cond_if_bases(x): 12 """ 13 >>> c = cond_if_bases(True) 14 >>> c().p 15 5 16 >>> c().x 17 1 18 >>> c = cond_if_bases(False) 19 >>> c().p 20 5 21 >>> c().x 22 2 23 """ 24 class PyClass(A if x else B): 25 p = 5 26 return PyClass 27 28 29def make_subclass(*bases): 30 """ 31 >>> cls = make_subclass(list) 32 >>> issubclass(cls, list) or cls.__mro__ 33 True 34 35 >>> class Cls(object): pass 36 >>> cls = make_subclass(Cls, list) 37 >>> issubclass(cls, list) or cls.__mro__ 38 True 39 >>> issubclass(cls, Cls) or cls.__mro__ 40 True 41 """ 42 # GH-3338 43 class MadeClass(*bases): 44 pass 45 return MadeClass 46