我可能会在这里以过于面向对象的方式思考,但我会一直回到某种看起来不友好的模式。
简化说明: -
我有一个出勤表,其中包含各种属性,包括clockin,lunchout,lunchin和clockout(所有类型的时间),员工ID和日期。
不同的员工可以有不同的班次,这取决于一周中的哪一天和一个月中的某天。员工的类别汇总在员工表中,班次小时等在小时表中汇总。休假表指定休假一半/全天。
我有来自其他来源(第三方,基本上认为这是一个csv)的原始登记时间,我排序,然后需要正确插入出勤表,我想我应该这样做: - a)以最早的时间作为clockin b)将最新时间作为时钟输出 c)根据员工当天的班次,将剩余时间与指定的午餐时间进行比较
c)是一个给我带来问题的人,因为有些员工在很短的时间内办理登机手续(也许他们需要用完一个小时才能见到客户),有些人根本不办理入住手续(吃饭)在,等)。因此,我需要将剩余时间与指定的午餐时间进行模糊匹配,这意味着我还必须访问“小时”表。我正在尝试在Attendance类中的一个函数中完成所有这些,所以它看起来像这样: -
class Attendance(Base):
... my attributes ...
def calc_attendance(self, listOfTimes):
# Do the necessary
但是看起来我需要在calc_attendance函数中执行更多查询。甚至不确定这是否可能,当然看起来不像我应该做的事情。
我可以在调用函数中执行多个查询,但这看起来更麻烦。我还考虑了多个连接,因此可以获得必要的信息(每个员工每天)。他们都没有感觉对,如果有必要,请纠正我。
答案 0 :(得分:0)
简而言之,是的,你似乎试图把所有东西都塞进一个班级,但这并不是“错误的”,而是你正在干什么课。
回答实际问题:是的,您可以在另一个类中执行查询,或者让该类将其自身转换为dict或其他类似的格式,这样可以在某些方面比较事情。
但是我在实践中发现,从时间角度来看,通常使用内部函数构建一个类并使用内部函数对该表的特定数据进行修改,以及执行特定“的”重写伞“作业”类更高效。任务“组的比较,数据输入等...但是封装了这个过程,以便它可以扩展并在将来被其他更高级别的类使用。这允许在各自的类中完成特定于表的工作,但是要比较和模糊匹配的组而不会使它们各自的表混乱。这使得维护代码更容易,并且可以在一个组中分割工作。它还允许更加专注于每项任务。从理论上讲,将来也允许进行asyncio和其他优化。
所以:
主要工作(班级)
(各种比较功能,数据输入验证等)
| - >表1类实例
| - >表2类实例
乐意进一步提供帮助。