Если вы хотите получить немного больше информации, кроме ответа Даниэля Розмана:
__repr__
и __str__
- две разные вещи в python. (обратите внимание, однако, что если вы определили только __repr__
, вызов class.__str__
переводится в вызов class.__repr__
)
Цель __repr__
должна быть однозначной. Кроме того, когда возможно сервер, вы должны определить реестр так, чтобы (в вашем случае) eval(repr(instance)) == instance
С другой стороны, цель __str__
должна быть переименована; так что имеет значение, если вам нужно распечатать экземпляр на экране (для пользователя, возможно), если вам не нужно это делать, тогда не реализуйте его (и, опять же, если str в не реализован будет называться repr)
Кроме того, при типе вещей в интерпретаторе Idle он автоматически вызывает повторное представление вашего объекта. Или когда вы печатаете список, он вызывает list.__str__
(который идентичен list.__repr__
), который вызывает в свою очередь репрезентативное представление любого элемента, содержащего список. Это объясняет поведение, которое вы получаете, и, надеюсь, как его исправить
Из MSDN :
Фоновые потоки идентичны потоки переднего плана с одним исключением: фоновый поток не сохраняет запущена среда управляемого выполнения.
См. на этой странице :
Основные потоки имеют возможность предотвращать завершение текущего приложения. CLR не завершит работу приложения (то есть выгружает хост-домен AppDomain) до тех пор, пока не закончатся все потоки переднего плана.
Фоновые потоки (иногда называемые потоками демона) рассматриваются CLR как расходные пути выполнения, которые могут быть игнорируются в любой момент времени (даже если они сейчас работают над какой-то единицей работы). Таким образом, если все потоки переднего плана завершены, все фоновые потоки автоматически завершаются при выгрузке домена приложения.