@@ -5274,10 +5274,38 @@ def _source(self):
5274
5274
5275
5275
def test_multiple_inheritance (self ):
5276
5276
class A :
5277
- pass
5278
- with self .assertRaises (TypeError ):
5279
- class X (NamedTuple , A ):
5280
- x : int
5277
+ @property
5278
+ def x (self ):
5279
+ return 4
5280
+ @property
5281
+ def y (self ):
5282
+ return 5
5283
+ def __len__ (self ):
5284
+ return 10
5285
+
5286
+ class X (NamedTuple , A ):
5287
+ x : int
5288
+ self .assertEqual (X .__bases__ , (tuple , A ))
5289
+ self .assertEqual (X .__orig_bases__ , (NamedTuple , A ))
5290
+ self .assertEqual (X .__mro__ , (X , tuple , A , object ))
5291
+
5292
+ a = X (3 )
5293
+ self .assertEqual (a .x , 3 )
5294
+ self .assertEqual (a .y , 5 )
5295
+ self .assertEqual (len (a ), 1 )
5296
+
5297
+ class Y (A , NamedTuple ):
5298
+ x : int
5299
+ self .assertEqual (Y .__bases__ , (A , tuple ))
5300
+ self .assertEqual (Y .__orig_bases__ , (A , NamedTuple ))
5301
+ self .assertEqual (Y .__mro__ , (Y , A , tuple , object ))
5302
+
5303
+ a = Y (3 )
5304
+ self .assertEqual (a .x , 3 )
5305
+ self .assertEqual (a .y , 5 )
5306
+ self .assertEqual (len (a ), 10 )
5307
+
5308
+ def test_multiple_inheritance_errors (self ):
5281
5309
with self .assertRaises (TypeError ):
5282
5310
class X (NamedTuple , tuple ):
5283
5311
x : int
0 commit comments