python - 我不断收到错误消息,说我的类名未在 python 中定义
问题描述
由于这个错误,我已经在我的学校计划中停留了一个多小时,我似乎无法弄清楚如何解决它。
导入系统
类我的日期:
#Constructer
def __init__(self, month, day, year):
self.day = day #Privet day
self.month = month #Privet month
self.year = year #privet year
#format for MDYYYY
def MDYYYY(self):
print("%i/%i/%i" %(myDate.month, myDate.day, myDate.year))
#format for MDYY
#format for YYYYMD
#mutator to set Day of the month
def setDay(self, a):
try:
day = int(a)
if day < 1 or day > 31:
raise Exception("invalid day")
except Exception as err:
print("Invalid day")
sys.exit( err )
else:
self.__day = day
#Mutator to set Month of the year
def setMonth(self, a):
try:
month = int(a)
if month < 1 or month > 12:
raise Exception("invalid month")
except Exception as err:
print("Invalid month")
sys.exit( err )
else:
self.__month = month
#Mutator to set the year of the date
def setYear(self, a):
try:
day = int(a)
if day < 1700:
raise Exception("invalid year")
except Exception as err:
print("Invalid year")
sys.exit( err )
else:
self.__year = year
# accessor to get day
def getDay(self):
return self.__day
# accessor to get the month
def getMonth(self):
return self.__month
# accessor to get the year
def getYear(self):
return self.__year
if __name__ == "__main__":
print()
print( "Instantiating object today and sorting value using .setMonth(6) .setDay(17) .setYear(2019)" )
setDay.day = 17
setMonth.month = 6
setYear.year = 2019
print(myDate.MDYYYY())
我在运行它时得到了这个结果:今天实例化对象并使用 .setMonth(6) .setDay(17) .setYear(2019) Traceback(最近一次调用最后一次)对值进行排序:文件“D:\RCCC\Fall 2020\Python GUI\Project 1\dateformat_duxbury.py",第 8 行,在 myDate() 类中:文件 "D:\RCCC\Fall 2020\Python GUI\Project 1\dateformat_duxbury.py",第 80 行,在 myDate print(myDate.MDYYYY ()) NameError: name 'myDate' 未定义
解决方案
从您帖子的格式来看,您的方法定义似乎与您的类 myDate 声明处于相同的缩进级别。这意味着它们不是该类的方法,而是全局空间的方法。您应该缩进所有这些,以便它们比 myDate 类的声明更深一层。这解释了“名称 'myDate' 未定义”错误。
还有几个错误:
- 您正在使用 setDay、setMonth 和 setYear,就好像它们是对象一样,这是不正确的。它们应该从类 myDate 的实例中调用。为此,您必须首先创建该实例,然后从中调用这些方法,如下所示:
例子:
date = myDate()
date.setDay(17)
date.setMonth(6)
date.setYear(2019)
- 您正在使用 myDate.MDYYYY() 这可能不会按照您的意图执行,因为 myDate 是一个类,而不是一个类的实例。请参阅上面的示例,了解如何创建该类的实例。
不要误会,但听起来您应该查看有关 Python 中的类如何工作的教程。
推荐阅读
- authentication - 将验证合法性的厚客户端应用程序将自身检查回源
- c# - 在 Entity Framework Core 中播种关系数据
- angular - 无法使用 Angular 11 中的 ViewChild 访问子组件属性
- r - 旋转和聚合表格线
- python - 如何在 Chrome 中双击打开 Jupyter Notebook 作为 Windows 上的桌面应用程序
- angular - Firebase 消息服务工作人员发送通知
- c++ - 货币转换器 C++ 给出括号错误
- c++ - 将名称读入带空格的字符串c ++
- r - 执行栅格像元值 [r] 的空间预测
- node.js - 从节点脚本中提取 bash 命令建议