0

日時オブジェクトの使用方法を理解するのに苦労しています。datetime.date インスタンスを辞書のキーとして使用したいと考えています。次に、datetime.delta を使用して、指定された範囲内の日付を返すことができるようにしたいと考えています。

私の最初の難問は、辞書に入力するオブジェクトを作成するときです。

class Work_day():
    '''input a workday , date and hours worked'''

    def __init__(self, date, hours, rate):
        self.date = datetime.date() 
        self.hours = hours
        self.rate = rate

self.date を datetime.date オブジェクトにしたいのですが、datetime.date は 3 つの引数 (年、月、日) を取るので、def_init_ 引数 'date' の正しい構文は何ですか?

次に、Work_day クラスでの記述方法を変更すると、たとえば add_work_day() メソッドなどの Timesheet クラスでインスタンスを作成するときに、コードを変更する必要があると想定します。

class Timesheet():
    '''Represent a collection of workdays'''

    def __init__(self):
        self.timesheet = {}

    def add_work_day(self, date, hours,rate):
        '''adds a record of a work day into the timesheet dictionary'''

        day = Work_day(date, hours, rate)
        if day.date in self.timesheet:
            print("There is already an entry for this day. ")

        else:
            self.timesheet[day.date] = hours, rate

私はPythonのドキュメントと精練の本を研究してきましたが、私はそれを手に入れていません! 助けが要る。

タイムシートにある範囲の稼働日を出力するメソッドもあります。日付キーを単純なintにサブしたときに機能させました。これは (''' ''') であり、その下にある datetime delta での不正な試みが行われています

def show_days(self):
    '''shows a user defined range of dates and the total pay for that period'''
    pp = pprint.PrettyPrinter()
    date_from = input("From date: ")
    date_to = input("To date: ")
    t = self.timesheet
    total = 0

    '''for dates in range(date_from, date_to + 1):
        if dates in t:
            total += self.sum_day(dates)
            pp.pprint((dates, t[dates)])
    print("Total £", total)'''

    date = date_start = datetime.date(date_from)
    date_end = datetime.date(date_to)

    while date <= date_end:
        if date in t:
            print(date, t[dates])
        date += datetime.timedelta(days=1)

誰かがこれについて私に話してくれる忍耐を見つけてくれることを願っています. 乾杯。

4

1 に答える 1