[英]Why do I keep getting a line 93 error saying TwitterClient not defined when it is defined in a class above?
[英]i keep getting the error saying that my class name is not defined in 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) 回溯(最近一次调用):文件“D:\\RCCC\\Fall 2020\\Python” GUI\\Project 1\\dateformat_duxbury.py", line 8, in class myDate(): File "D:\\RCCC\\Fall 2020\\Python GUI\\Project 1\\dateformat_duxbury.py", line 80, in myDate print(myDate.MDYYYY.py) ()) NameError: name 'myDate' 未定义
从您帖子的格式来看,您的方法定义似乎与您对 myDate 类的声明处于同一缩进级别。 这意味着它们不是该类的方法,而是全局空间的方法。 您应该将所有这些缩进,以便它们比类 myDate 的声明更深一层。 这解释了“名称 'myDate' 未定义”错误。
还有几个错误:
例子:
date = myDate()
date.setDay(17)
date.setMonth(6)
date.setYear(2019)
不要误会,但听起来您应该查看有关类如何在 Python 中工作的教程。
欢迎使用堆栈溢出。
您的问题似乎更像是一个概念上的问题,而不是实现上的问题。 我强烈建议您阅读面向对象的原则,因为您似乎混淆了类和对象。
例如,您的具体错误是参考了这部分代码:
#format for MDYYYY
def MDYYYY(self):
print("%i/%i/%i" %(myDate.month, myDate.day, myDate.year))
但是,您是否考虑过该函数中是否有 myDate 的任何实例? 实际上,您尝试访问的是您将从中调用 MDYYYY() 的特定对象的月、日和年。 在这种情况下,您需要访问对象自己的月、日和年变量。 为此,您可以使用self
关键字访问对象的内部变量。
#format for MDYYYY
def MDYYYY(self):
print("%i/%i/%i" %(self.month, self.day, self.year))
现在,第二个问题是在主代码块中实例化一个对象。
if __name__ == "__main__":
print()
print( "Instantiating object today and sorting value using .setMonth(6) .setDay(17) .setYear(2019)" )
# Instantiate a myDate object here:
myDateObject = myDate(4, 25, 2005) # You need to pass in the month, day and year values as part of your class init function
# You call instance functions on the object itself, such as
myDateObject.setDay(7)
myDateObject.setMonth(6)
myDateObject.setYear(2019)
# Call the MDYYYY function on the myDateObject instance and not the myDate class
print(myDateObject.MDYYYY())
同样,我强烈建议您复习一些 OOP 基础知识。 希望这会有所帮助。
目前尚不清楚为什么在您的main
部分中您访问类方法而不先实例化类。 你的评论说你正在实例化这个类,但你真的不是。 它应该是这样的:
if __name__ == "__main__":
md = myDate(1, 1, 1900)
md.setDay(17)
md.setMonth(6)
md.setYear(2019)
好的,那么MDYYYY()
方法以奇怪的方式定义。 这是myDate
类的一个方法,但出于某种原因,您指的是该类,而不是简单地使用self
:
def MDYYYY(self):
print("%i/%i/%i" %(myDate.month, myDate.day, myDate.year))
#Should probably be defined instead like
def MDYYYY(self):
print(f'{self.month}/{self.day}/{self.year}')
此外,您有缩进问题,并且您的类/方法名称不是 Pythonic(请参阅PEP 8 )。
因此,如果其他人遇到此问题,这里是我用来解决问题的最终代码,感谢评论并帮助我的人。 另外我不知道为什么它会在代码中显示导入和类,但所有功能都被标记了。
`导入系统
我的日期类:
#Constructer
def __init__(self, month, day, year):
self.day = day
self.month = month
self.year = year
#format for MDYYYY
def MDYYYY():
print(f'{myDate.month}/{myDate.day}/{myDate.year}')
#format for MDYY
def MDYY():
print(f'{myDate.month}/{myDate.day}/{myDate.year}')
#format for YYYYMD
def YYYYMD():
print(f'{myDate.year}/{myDate.month}/{myDate.day}')
#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( "今天实例化对象并使用 .setMonth(6) .setDay(17) .setYear(2019)" ) myDate.day = 17 myDate.month= 6 myDate.年 = 2019
# Print the date format for MM/DD/YYYY (01/01/2001)
print('Showing date in format- MM/DD/YYYY: ', end = '')
print(myDate.MDYYYY())
print("Instantiating object today and sorting value using .setMonth(7) .setDay(18) .setYear(2021)")
myDate.day = 18
myDate.month= 7
myDate.year = 2021
if myDate.year > 1699 and myDate.year < 1800:
myDate.year = myDate.year - 1700
elif myDate.year > 1799 and myDate.year < 1900:
myDate.year = myDate.year - 1800
elif myDate.year > 1899 and myDate.year < 2000:
myDate.year = myDate.year - 1900
elif myDate.year > 1999 and myDate.year < 2100:
myDate.year = myDate.year - 2000
# Print the date fomat for MM/DD/YY (01/01/01)
print('Showing date format - MM/DD/YY: ', end = '')
print(myDate.MDYY())
myDate.year = 2021
# Prints the date format for YYYY/MM/DD (2001/01/01)
print('Showing date format - YYYY/MM/DD: ', end ='')
print(myDate.YYYYMD())
print()`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.