在构造函数中使用常量

时间:2018-03-29 17:52:26

标签: python class constructor constants

当我尝试在类中的构造函数中使用常量时,我​​收到错误。我整个上午都在搜索问题的解决方案,我可以通过在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'未定义"

任何帮助和解释都将不胜感激。

2 个答案:

答案 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,因为这些常量是类变量,而不是全局变量。