我有以下一段代码,我正在尝试使用 OOP 样式在类中编写它。最终所需的输出是要返回的 full_results
列表。
import datetime
def generate_dates():
start_date = datetime.date(2020, 8, 24)
end_date = datetime.datetime.now().date()
diff = (end_date - start_date).days
start_dates = []
end_dates = []
i = 0
while i < diff:
a_date = (start_date + datetime.timedelta(days=i)).isoformat()
b_date = (start_date + datetime.timedelta(days=i + 10)).isoformat()
start_dates.append(a_date)
end_dates.append(b_date)
i += 10
return start_dates, end_dates
dates = generate_dates()
start_dates = dates[0]
end_dates = dates[1]
def get_report(start_date, end_date):
pass
def get_data():
full_results = []
for i, row in enumerate(start_dates):
z = get_report(row, end_dates[i])
full_results.append(z)
return full_results
这是我在 OOP 中编写相同代码的尝试。我是新手,我不知道如何像上面所做的那样将函数分配给变量。
class GA():
def __init__(self):
self.dates = None
self.start_dates = None
self.end_dates = None
def generate_dates(self):
start_date = datetime.date(2020, 8, 24)
end_date = datetime.datetime.now().date()
diff = (end_date - start_date).days
start_dates = []
end_dates = []
i = 0
while i < diff:
a_date = (start_date + datetime.timedelta(days=i)).isoformat()
b_date = (start_date + datetime.timedelta(days=i + 10)).isoformat()
start_dates.append(a_date)
end_dates.append(b_date)
i += 10
return start_dates, end_dates
dates = generate_dates()
start_dates = dates[0]
end_dates = dates[1]
def get_report(self, start_date, end_date):
pass
def get_data(self):
full_results = []
for i, row in enumerate(self.start_dates):
z = self.get_report(row, self.end_dates[i])
full_results.append(z)
return full_results
我尝试使用 self
引用 now 属性,但它也不起作用。具体来说,我收到错误 TypeError: generate_dates() missing 1 required positional argument: 'self'
。我认为仍然有很多错误,但这是我遇到的第一个错误,因此我们将不胜感激。
附言另外,如果有更好的方法来构建/编写它,请告诉我。
答案 0 :(得分:-1)
import datetime
class GA():
def __init__(self):
self.dates = None
self.start_dates = None
self.end_dates = None
def generate_dates(self):
start_date = datetime.date(2020, 8, 24)
end_date = datetime.datetime.now().date()
diff = (end_date - start_date).days
start_dates = []
end_dates = []
i = 0
while i < diff:
a_date = (start_date + datetime.timedelta(days=i)).isoformat()
b_date = (start_date + datetime.timedelta(days=i + 10)).isoformat()
start_dates.append(a_date)
end_dates.append(b_date)
i += 10
return start_dates, end_dates
def get_your_function_name(self):
self.dates = self.generate_dates()
self.start_dates = self.dates[0]
self.end_dates = self.dates[1]
return [ self.dates , self.start_dates , self.end_dates ]
def get_report(self, start_date, end_date):
pass
def get_data(self):
full_results = []
for i, row in enumerate(self.start_dates):
z = self.get_report(row, self.end_dates[i])
full_results.append(z)
return full_results
GA().generate_dates()
print(GA().get_your_function_name())