1# test for type.__bases__ implementation 2 3if not hasattr(object, '__bases__'): 4 print("SKIP") 5 raise SystemExit 6 7class A: 8 pass 9 10class B(object): 11 pass 12 13class C(B): 14 pass 15 16class D(C, A): 17 pass 18 19# Check the attribute exists 20print(hasattr(A, '__bases__')) 21print(hasattr(B, '__bases__')) 22print(hasattr(C, '__bases__')) 23print(hasattr(D, '__bases__')) 24 25# Check it is always a tuple 26print(type(A.__bases__) == tuple) 27print(type(B.__bases__) == tuple) 28print(type(C.__bases__) == tuple) 29print(type(D.__bases__) == tuple) 30 31# Check size 32print(len(A.__bases__) == 1) 33print(len(B.__bases__) == 1) 34print(len(C.__bases__) == 1) 35print(len(D.__bases__) == 2) 36 37# Check values 38print(A.__bases__[0] == object) 39print(B.__bases__[0] == object) 40print(C.__bases__[0] == B) 41print(D.__bases__[0] == C) 42print(D.__bases__[1] == A) 43 44# Object has an empty tuple 45print(object.__bases__ == tuple()) 46