39 lines
		
	
	
		
			503 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			503 B
		
	
	
	
		
			Python
		
	
	
	
from dataclasses import dataclass
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class S:
 | 
						|
    a: int
 | 
						|
    b: str
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class C:
 | 
						|
    c: S
 | 
						|
    d: S
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class C2:
 | 
						|
    e: C
 | 
						|
    f: S
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class C3:
 | 
						|
    g: S
 | 
						|
    h: C2
 | 
						|
    i: str
 | 
						|
    j: str
 | 
						|
 | 
						|
 | 
						|
def test_recursive_dataclasses():
 | 
						|
    left = C3(
 | 
						|
        S(10, "ten"), C2(C(S(1, "one"), S(2, "two")), S(2, "three")), "equal", "left",
 | 
						|
    )
 | 
						|
    right = C3(
 | 
						|
        S(20, "xxx"), C2(C(S(1, "one"), S(2, "yyy")), S(3, "three")), "equal", "right",
 | 
						|
    )
 | 
						|
 | 
						|
    assert left == right
 |