Python 为什么我的班级提出了一个属性错误?

Python 为什么我的班级提出了一个属性错误?,python,class,attributes,Python,Class,Attributes,我可能是瞎子,但我真的不明白为什么这门课失败了: AttributeError:NextSunday实例没有属性“触发器” 从日期时间导入日期时间 从日期时间导入时间 从日期时间导入时间增量 类NextSunday(): def u uu init u uuu(自,触发器=无): """ 获取的日期和到下周日的天数。 论据: -`trigger`:如果少于触发天数,则额外添加一周。 """ self.str=u'%s(%s天)%(self.date().date(),self.no_天()) s

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

AttributeError:NextSunday实例没有属性“触发器”

从日期时间导入日期时间
从日期时间导入时间
从日期时间导入时间增量
类NextSunday():
def u uu init u uuu(自,触发器=无):
"""
获取的日期和到下周日的天数。
论据:
-`trigger`:如果少于触发天数,则额外添加一周。
"""
self.str=u'%s(%s天)%(self.date().date(),self.no_天())
self.trigger=触发器
def ___; unicode(自):
返回self.str
定义(自我):
返回unicode(self).encode('utf-8')
定义报告(自我):
返回“”
def no_天数(自):
“”“获取下周日的日期。”“”
天数=无
对于范围(7)中的i:
dt=datetime.now()+timedelta(天=i)
如果dt.weekday()==6:
天=我
#如果剩余天数减少,则再增加一周,然后触发
如果自动触发:
如果天数
您需要切换这些选项

    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())
因为在创建
self.trigger
属性之前,会调用
no_days
方法。这是不好的,因为
no_days
方法试图读取
self.trigger
属性的值:

if self.trigger:
    if days < self.trigger:
如果self.trigger:
如果天数
您需要切换这些选项

    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())
因为在创建
self.trigger
属性之前,会调用
no_days
方法。这是不好的,因为
no_days
方法试图读取
self.trigger
属性的值:

if self.trigger:
    if days < self.trigger:
如果self.trigger:
如果天数
哦,这很有趣。它解决了问题(将问题标记为尽快解决)。但这是为什么呢?我看不见。在设置触发器之前,你先调用
禁止天数
。@Niclas我已经更新了我的答案,希望能有更彻底的解释。@lazyr哦,这应该是显而易见的。但是我以前没有遇到过这个问题,所以我没有考虑过。非常感谢!哦,那很有趣。它解决了问题(将问题标记为尽快解决)。但这是为什么呢?我看不见。在设置触发器之前,你先调用
禁止天数
。@Niclas我已经更新了我的答案,希望能有更彻底的解释。@lazyr哦,这应该是显而易见的。但是我以前没有遇到过这个问题,所以我没有考虑过。非常感谢!删除不必要的行,直到找到问题的根源。完整的stacktrace将识别原始行。这就是为什么我养成了在调用任何方法之前总是先在初始值设定项顶部设置实例变量的习惯。删除不必要的行,直到找到问题的根源。完整的stacktrace将标识原始行。这就是为什么我养成了在调用任何方法之前总是先在初始值设定项顶部设置实例变量的习惯。