Почему — то когда работаю с классом не через главный поток, переменные в классе не изменяются, почему?
Ну второе как раз объяснимо, ты запускаешь work() для одного и того же класса.
Пока первая копия work() спит в time.sleep(1), начинает выполняться вторая, так как всё происходит в отдельных потоках. Вторая видит isworking = 1, и останавливается.
Ввиду отсутствия какой-либо синхронизации потоков, работающих с одним и тем же объектом, результат получается неопределен.
В представленном коде запускаются 2 потока подряд, без ожидания завершения каждого из них. А результат, вероятно, проверялся в главном потоке, пока оба потока ещё работали.