当我尝试在类中的构造函数中使用常量时,我收到错误。我整个上午都在搜索问题的解决方案,我可以通过在getter中使用if / else语句来编写程序函数,但是指令是使用常量。
class Fan:
SLOW = 1
MEDIUM = 2
FAST = 3
def __init__(self, speed=SLOW, radius=5, color='blue', on=False):
self.__speed = speed
self.__on = on
self.__radius = radius
self.__color = color
def getSpeed(self):
return self.__speed
def getRadius(self):
return self.__radius
def getColor(self):
return self.__color
def getOn(self):
return self.__on
def setSpeed(self, speed):
self.__speed = speed
def setRadius(self, radius):
self.__radius = radius
def setColor(self, color):
self.__color = color
def setOn(self, on):
self.__on = on
fan1 = Fan(FAST, 10, 'yellow', True)
fan2 = Fan(MEDIUM, 5, 'blue', False)
print(fan1.getSpeed())
print(fan1.getRadius())
print(fan1.getColor())
print(fan1.getOn())
print()
print(fan2.getSpeed())
print(fan2.getRadius())
print(fan2.getColor())
print(fan2.getOn())
当我运行此代码时,我收到以下错误" NameError:name' FAST'未定义"
任何帮助和解释都将不胜感激。
答案 0 :(得分:3)
主程序中不存在FAST。它只存在于你的班级
中您需要在课程中引用FAST
改为使用Fan.FAST
。
在使用默认参数实例化Fan对象时,您可能也会收到错误,除非您将SLOW
更改为Fan.SLOW
答案 1 :(得分:3)
你需要:
fan1 = Fan(Fan.FAST, 10, 'yellow', True)
fan2 = Fan(Fan.MEDIUM, 5, 'blue', False)
您需要在Fan.
和FAST
前面添加MEDIUM
,因为这些常量是类变量,而不是全局变量。