【问题标题】:Why does my my class method fail to print output?为什么我的类方法无法打印输出?
【发布时间】:2020-09-17 10:08:39
【问题描述】:

我正在尝试编写一个自动通知系统,该系统根据特定日期和时间返回通知 (Michael)。我使用了一个类对象,但是当它调用分配的方法时,它不返回任何输出。该代码没有给出任何错误,这让一切变得混乱。我在 2 分钟前运行了代码,当当前时间到来时,什么也没发生。这是我的第一个 python 项目。

#import required modules

import datetime

from datetime import date

import calendar


#Get the variable for time right mow

dt = datetime.datetime.now()

#remove the millisecond

x = dt.strftime("%H:%M:%S")

#define class

class Change:
    def __init__(self):
        # define value for date_str argument in mon method
        self.date_str = x

    def mon(self, date_str):
        if date_str == "10:22:00":
            print('michael')

#class instantiation via object
#set value for today's day name

my_date = date.today()

Today = calendar.day_name[my_date.weekday()]

if Today == 'Thursday':

    if x == "10:22:00":

        #call object when if statement is true
        assembly_end_mental_maths_starts = Change()
        assembly_end_mental_maths_starts.mon("10:22:00")

【问题讨论】:

  • 在最后两个 if 语句中看起来像 Today != 'Thursday'x != "10:22:00"。鉴于x当前 时间,你确定你是在10:22:00 运行这段代码吗?
  • 哦,是的,是的。我提前 2 分钟运行了代码,当当前时间到来时,什么也没发生。

标签: python class object methods output


【解决方案1】:

这在我看来是经典的XY problem

但首先你的问题,正如@ForceBru所说,你是否在那个时候运行程序以让它触发,即使这样,如果你循环它也不是一个好的解决方案,因为条件需要在那个时候触发第二,这可能会在循环周期之间传递。 你要找的是schedule

How do I get a Cron like scheduler in Python? [closed]

import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)

while 1:
    schedule.run_pending()
    time.sleep(1)

【讨论】:

  • 我在 2 分钟前运行了代码。当它在 15 分钟后响起警报,然后在 40 分钟后响起,然后在 20 分钟后响起下一个警报时,调度将如何处理时间上的不一致?该代码用于自动学校通知,包括装配、课程、休息等。
  • 库的不同之处在于,它不会检查确切时间是否为 10:00:00(这可能永远不会发生),而是将它们视为“在/之后要做的事情”10 :00 所以如果循环在 10:00:01 触发,它会像“哦,我应该在 10:00:00 做这个,现在就做吧。”此外,您的代码没有循环,因此一旦发现时间不是它希望的那样,它就会运行,并且再也不会运行。
  • 好的,这真的很有帮助。请问如何在代码中添加循环?
  • while 1: print("Check If something is something") time.sleep(1) #我们不想用msges向控制台发送垃圾邮件
  • 另外,你好像不太熟悉基本的python/编程,我建议你看看w3schools.com/python/python_for_loops.asp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2022-11-21
相关资源
最近更新 更多