Ok, I think I found a trick using nn.ModuleDict
class ComplexNet(nn.Module):
def __init__(self):
    
    super(ComplexNet, self).__init__()
    
    self.R = nn.ModuleDict()

    for pp in ['00', '01', '10', '11']:
        for ii in ['x','y','z']:
            for jj in ['x','y','z']:  
                for kk in ['r', 'i']:
                    self.R[pp+'e'+jj+'e'+ii+'_'+kk] = HadamardProduct(Nky, Nkx, pp+'e'+jj+'e'+ii+'_'+kk, bias = False)
                    self.R[pp+'h'+jj+'e'+ii+'_'+kk] = HadamardProduct(Nky, Nkx, pp+'h'+jj+'e'+ii+'_'+kk, bias = False)

Let me know if you have any other suggestion