Объяснение
Причина того, почему ваш скрипт еще не «проснулся», заключается в том, что вы либо не понимаете, как работают классы, либо просто пропустили часть вашего кода (я предположим, что это первое, так как ответ будет более информативным).
Класс состоит из методов (функций) и атрибутов (переменных). Их можно использовать напрямую (статически) или через экземпляры. В вашем случае вы пытаетесь использовать класс Sunclock
в качестве экземпляра с именем sunfloat
: sunfloat = Sunclock()
.
В следующей строке вы запускаете метод suntime
, используя sunfloat
, и это устанавливает атрибуты: sunrisetime
, sunsettime
, curenttime
, curenttimelong
и date
. После этого вы просто назначаете переменные некоторым из этих атрибутов.
Теперь давайте go к root проблемы:
while get_sunrise > get_current or get_sunset < get_current:
get_sunset = sunfloat.sunsettime
get_sunrise = sunfloat.sunrisetime
get_current = sunfloat.currenttime
sleep(300)
То, что вы делаете здесь, - это присваивание переменные к одним и тем же атрибутам все время. sunfloat.sunsettime
, sunfloat.sunrisetime
и sunfloat.currenttime
никогда не изменятся, пока вы находитесь в l oop, они не получат новые значения из воздуха - их значения необходимо изменить.
Решение
Чтобы изменить значения атрибутов, вы захотите снова вызвать метод suntime
. Метод установит для всех атрибутов самые актуальные значения:
while get_sunrise > get_current or get_sunset < get_current:
# All the attributes get re-assigned to the most up-to-date values.
sunfloat.suntime()
get_current = sunfloat.currenttime
get_sunset = sunfloat.sunsettime
get_sunrise = sunfloat.sunrisetime
sleep(300)