| n | class Mixed: | n | class Combined: | 
            |  |  |  |  | 
            | n | def __init__(self, *objects): | n | def __init__(self, *components): | 
            |  | for obj in objects: |  | for component in components: | 
            |  | for attr in dir(obj): |  | for attribute in dir(component): | 
            |  | if not attr.startswith('_'): |  | if not attribute.startswith('_'): | 
            |  | value = getattr(obj, attr) |  | value = getattr(component, attribute) | 
            |  | if not callable(value): |  | if not callable(value): | 
            | n | setattr(self, attr, value) | n | setattr(self, attribute, value) | 
            |  |  |  |  | 
            | n | def __str__(self): | n | def __repr__(self): | 
            |  | attrs = {k: v for k, v in self.__dict__.items()} |  | properties = {key: value for key, value in vars(self).items()} | 
            |  | sorted_attrs = sorted(attrs.items()) |  | ordered_properties = sorted(properties.items()) | 
            |  | return ', '.join((f'{k}={v}' for k, v in sorted_attrs)) |  | return ', '.join((f'{key}={value}' for key, value in ordered_pro | 
            |  |  |  | perties)) | 
            |  |  |  |  | 
            | t | def mix(*objects): | t | def mix(*components): | 
            |  | return Mixed(*objects) |  | return Combined(*components) |