我可能会失明,但我真的不明白为什么这堂课失败了:
AttributeError:NextSunday实例没有属性'trigger'
from datetime import datetime
from datetime import time
from datetime import timedelta
class NextSunday():
def __init__(self, trigger=None):
"""
Get date of, and number of days until, next Sunday.
Arguments:
- `trigger`: Add an extra week if less than trigger number of days.
"""
self.str = u'%s (%s days)' % (self.date().date(), self.no_days())
self.trigger = trigger
def __unicode__(self):
return self.str
def __str__(self):
return unicode(self).encode('utf-8')
def __repr__(self):
return '<Next Sunday: ' + self.str + '>'
def no_days(self):
"""Get date of next sunday. """
days = None
for i in range(7):
dt = datetime.now() + timedelta(days=i)
if dt.weekday() == 6:
days = i
# Add another week if there are less days left then trigger
if self.trigger:
if days < self.trigger:
days += 7
return days
def date(self):
# The datetime obj contains the next sunday, but also the current time
dt_of_next_sun = datetime.now() + timedelta(days=self.no_days())
# Get the whole day
date_of_next_sun = datetime.combine(dt_of_next_sun.date(),
time(23, 59))
return date_of_next_sun
答案 0 :(得分:4)
您需要切换这些
self.str = u'%s (%s days)' % (self.date().date(), self.no_days())
self.trigger = trigger
像这样
self.trigger = trigger
self.str = u'%s (%s days)' % (self.date().date(), self.no_days())
因为否则{/ 1}}方法在创建no_days
属性之前被称为。这很糟糕,因为self.trigger
方法尝试读取no_days
属性的值:
self.trigger