我正在自学python,所以我做了一个项目,几个小项目一起工作,其中之一是一个日期跟踪器。Date函数工作正常。但是,当我尝试调用new day函数将日期增加1并根据需要更改月份和年份时,我得到了一个错误:
"AttributeError: 'function' object has no attribute 'day'".
我知道在一个函数里面有一个独立的局部变量而不是全局变量,而且你不应该让全局变量不断地改变,所以我试着让一个函数调用并使用另一个函数的变量,我计划把它做成一个按钮,可以改变1或7的日期,我只是无法想象如何让这个功能工作。任何方向或帮助让这个工作将不胜感激
# making a basic calendar
#list of months and their days
month_day = [[1,'January',31],[2,'February',28],
[3,'March',31],[4,'April',30],
[5,'May',31],[6,'June',30],
[7,'July',31],[8,'August',31],
[9,'September',30],[10,'October',31],
[11,'November',30],[12,'December',31]]
#checksum for new year
def isleapyear(year):
if year%4 == 0:
if year%100 == 0:
if year%400 == 0:
month_day[1][2] = 29
else:
month_day[1][2] = 28
else :
month_day[1][2] = 29
else:
month_day[1][2] = 28
#editable date (supposed to be
def Date():
year = 1
day = 31
month = 1
isleapyear(year)
date = [day, month_day[month-1][1], year]
return date
#function to increase day counter by 1
def new_day():
#checksum for month or year rollover
if Date.day == month_day[Date.month-1][2]:
Date.day = 1
if Date.month == 12:
Date.month = 1
Date.year = Date.year + 1
else:
Date.month = month + 1
else:
Date.day = Date.day + 1
new_day()
print (Date())
提前感谢大家!
1条答案
按热度按时间mi7gmzs61#
首先,你不能从函数中获取变量。
一种处理的方法是在
Date
函数中添加global year, day, month
行,这将使变量year,day,month成为全局变量,这样你就可以在所有函数中使用它,在new_day
中删除Date.
。这应该能解决你的问题。
Date.day
仅在Date
是类而不是函数时才起作用。例如:
[编辑]
如果要更改年、日或月
但是最好的方法是使用
global
。示例
global语句在函数'global'中创建变量,换句话说,变量的行为就像它在函数之外一样。