[英]Assigning methods to class attributes
I have the following piece of code and i'm trying it to write it in a class using OOP style.我有以下代码,我正在尝试使用 OOP 样式将其写入 class 中。 Ultimately the desired output will be for the
full_results
list to be returned.最终,所需的 output 将用于返回
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
Here's my attempt to write the same code in OOP.这是我在 OOP 中编写相同代码的尝试。 I'm new to this and i don't know how to assign a function to a variable as i have done above.
我是新手,我不知道如何像上面所做的那样将 function 分配给变量。
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
I have tried to refer to the now attributes using the self
but it did not work either.我曾尝试使用
self
来引用 now 属性,但它也不起作用。 Specifically i'm getting the error TypeError: generate_dates() missing 1 required positional argument: 'self'
.具体来说,我收到错误
TypeError: generate_dates() missing 1 required positional argument: 'self'
。 I think there are many mistakes still, but this is the first error that i'm getting, so any help will be much appreciated.我认为仍然有很多错误,但这是我遇到的第一个错误,所以任何帮助将不胜感激。 ps Also if there's a better way to structure/write this, please do let me know.
ps 另外,如果有更好的方法来构建/编写这个,请告诉我。
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())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.