gpt4 book ai didi

python - 为什么我的类(class)会引发 AttributeError?

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:05 25 4
gpt4 key购买 nike

我可能是瞎子,但我真的不明白为什么这门课会失败:

AttributeError: NextSunday instance has no attribute '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

最佳答案

你需要切换这些

    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())

否则 no_days 方法会在 self.trigger 属性创建之前被调用。这很糟糕,因为 no_days 方法试图读取 self.trigger 属性的值:

if self.trigger:
if days < self.trigger:

关于python - 为什么我的类(class)会引发 AttributeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13185218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com