@@ -1413,7 +1413,7 @@ class C:
14131413        C ().x 
14141414        self .assertEqual (factory .call_count , 2 )
14151415
1416-     def  test_default_factory_with_no_init_method (self ):
1416+     def  test_default_factory_and_init_method_interaction (self ):
14171417        # See https://github.com/python/cpython/issues/89529. 
14181418
14191419        @dataclass  
@@ -1452,8 +1452,8 @@ class C(base_class):
14521452                self .assertListEqual (C ().x , [])
14531453
14541454            with  self .subTest ('user-defined __init__' , base_class = base_class ,
1455-                               init = False , slots = slots , field_init = field_init ):
1456-                 @dataclass (init = False , slots = slots ) 
1455+                               init = True , slots = slots , field_init = field_init ):
1456+                 @dataclass (init = True , slots = slots ) 
14571457                class  C (base_class ):
14581458                    x : list  =  field (init = field_init , default_factory = list )
14591459                    def  __init__ (self , * a , ** kw ):
@@ -1468,6 +1468,16 @@ def __init__(self, *a, **kw):
14681468                    class  C (base_class ):
14691469                        x : list  =  field (init = field_init , default_factory = list )
14701470
1471+             with  self .subTest ('user-defined __init__' , base_class = base_class ,
1472+                               init = False , slots = slots , field_init = field_init ):
1473+                 @dataclass (init = False , slots = slots ) 
1474+                 class  C (base_class ):
1475+                     x : list  =  field (init = field_init , default_factory = list )
1476+                     def  __init__ (self , * a , ** kw ):
1477+                         # deliberately use something else 
1478+                         self .x  =  'world' 
1479+                 self .assertEqual (C ().x , 'world' )
1480+ 
14711481    def  test_default_factory_not_called_if_value_given (self ):
14721482        # We need a factory that we can test if it's been called. 
14731483        factory  =  Mock ()
0 commit comments