Python代码中时间不更新和“ss 未定义”问题如何解决?

python代码中时间不更新和“ss 未定义”问题如何解决?

python 时间不更新和“ss 未定义”问题

在你的python代码中遇到了两个问题:时间不更新和“ss 未定义”。

时间不更新

这是因为你没有在循环中重新设置全局变量 t 和类属性 ss。t 在程序启动时被赋值,ss 在类的第一次初始化时被赋值。在循环中,你必须重新赋值这些变量,以便它们反映当前时间。

改进后的代码:

import time

t = time.strftime('%h:%m', time.localtime())

class ee:
    ss = time.strftime('%h:%m', time.localtime())

    def a(self):
        print(t, 'a() t')

    def b(self):
        print(ee.ss, 'b() ee.ss')

    def c(self):
        global ss
        print(ss, 'c() global ss')

    def d(self):
        print(time.strftime('%h:%m', time.localtime()), 'd()')

if __name__ == '__main__':
    z = ee()
    while true:
        t = time.strftime('%h:%m', time.localtime())
        z.ss = time.strftime('%h:%m', time.localtime())
        z.a()
        z.b()
        z.c()
        z.d()
        time.sleep(2)

“ss 未定义”

这是因为你尝试在全局范围内访问类属性 ss,但没有在全局范围内定义它。解决方法是使用 global 关键字将 ss 声明为全局变量,或使用类方法访问它。

改进后的代码:

import time

class ee:
    def __init__(self):
        global ss
        ss = time.strftime('%H:%M', time.localtime())

    def a(self):
        print(t, 'a() t')

    def b(self):
        print(ee.ss, 'b() ee.ss')

    def c(self):
        print(ss, 'c() global ss')

    def d(self):
        print(time.strftime('%H:%M', time.localtime()), 'd()')

if __name__ == '__main__':
    ee()  # 调用构造函数
    while True:
        z = ee()
        z.a()
        z.b()
        z.c()
        z.d()
        time.sleep(2)

以上就是Python代码中时间不更新和“ss 未定义”问题如何解决?的详细内容,更多请关注其它相关文章!