Python无法在函数外打印函数属性报错:function对象无Daysleft属性
报错原因
- 最直接的原因是拼写大小写不一致:你在函数内部为函数对象绑定的属性名为
DaysLeft(首字母L大写),但调用打印时写的是Daysleft(首字母l小写),名称不匹配自然找不到对应属性。 - 额外说明:将返回值绑定为函数对象属性的写法本身存在设计隐患,函数属性是全局共享的,多次调用该函数会直接覆盖之前的属性值,很容易出现意料之外的bug。
修复方案
临时修复
直接修正打印语句的拼写即可正常运行:
correctdate(compare,Dayslist,Monthslist) print(correctdate.DaysLeft)
规范优化方案(推荐)
直接修改函数逻辑,通过返回值传递结果,完全不需要依赖函数属性、也不需要提前传入可变列表参数,避免副作用,代码更易维护:
def correctdate(compare): Dayslist = [] # 分割天的部分 for day in compare: if day == "/" or day == "\\": compare.remove(day) break else: Dayslist.append(day) # 移除天的字符,剩下的是月的部分 for removenum in Dayslist: compare.remove(removenum) # 处理前导零 days_left = "".join(Dayslist).lstrip("0") months_left = "".join(compare).lstrip("0") # 直接返回两个结果 return days_left, months_left
调用方式也更简洁:
DaysLeft, MonthsLeft = correctdate(compare) print(DaysLeft)
内容的提问来源于stack exchange,提问作者Moaz_pr
相关产品推荐
相关产品推荐

