【问题标题】:New To the concept of Object Oiented Programming [closed]面向对象编程概念的新概念
【发布时间】:2017-05-01 22:31:51
【问题描述】:

我想知道我是否需要创建这个类来存储我需要能够从时间模块中获取的信息。这是坏代码吗?我什至不知道这是否是一个很好的问题。还是我只是把事情复杂化了?我基本上只需要日期和时间,因为我将创建一个 sign_in/out 方法,该方法会在用户登录或注销时为他们创建时间戳。基本上就像一个打孔卡系统。提前致谢 杰拉德

import time
the_time = time.localtime()

class Clock():

    def __init__(self, year, month, day, hour, minute, second ):
        self.year = year
        self.month = month
        self.day = day
        self.hour = hour
        self.minute = minute
        self.second = second

list1 = []
for t in the_time:
    list1.append(t)
print(list1)



clock_list = Clock(list1[0],list1[1],list1[2],list1[3],list1[4],list1[5])

print(clock_list.minute)
print(clock_list.second)

【问题讨论】:

  • 这是一个见仁见智的问题,但我个人不会为这样的事情使用类...
  • 您通常会为此使用datetime。不要重新发明轮子。
  • 你把事情复杂化了。 time.localtime() 返回一个具有命名属性的对象。只是print(the_time.tm_min),等等。不需要上课。
  • 在关闭之前我正在写一个答案。对于这个虚拟问题来说,这显然太复杂了,但是在某些用例中,您肯定希望一个真实的类来表示您的时间对象。想象一个打卡系统,您可以在其中修改每个打孔,但原始值应保留在历史记录中以便恢复,并且可以针对每个修改的打孔生成报告。
  • datetime 和从系统时钟获取时间和日期的时间有区别吗?所以换句话说,我基本上是通过创建一个 clss 来使这个复杂化?我猜签入/签出时间可能就像签入/签出 = time.localtime() ? IDK 我还在学习这个哈哈

标签: python class oop time


【解决方案1】:

从严格的计算机科学的角度来看,您永远需要使用面向对象编程 - 如果您使用的语言是图灵完备的,那么您可以编写所有代码您需要一些简单的说明。 OOP 的重点在于,它通过对程序的其余部分隐藏实现细节,使大型程序更易于管理。

在您的情况下,您所做的事情本身并没有错,但如果这就是您的程序所做的一切,那么您就不需要 OOP。但是,如果您的程序开始变得更大,那么使用 OOP 可能是值得的。

学习 OOP 的难点之一是知道何时进行抽象,以及知道要进行什么抽象。一旦您尝试使用 OOP 编写一些程序,这应该会开始变得更加清晰。

【讨论】:

  • 感谢您的意见 :) 我想我可能对自己的事情过于复杂了。我一直在阅读有关 Tkinter 的文章,因为我可能会用它来制作登录按钮和文本框小部件仍然有很多东西要学:P 大量的试验和错误:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多