关于python:在构造函数中使用常量

Using constants in constructor

本问题已经有最佳答案,请猛点这里访问。

当我试图在类中的构造函数内使用常量时,会得到一个错误。我整个上午都在寻找问题的解决方案,我可以通过使用getter中的if/else语句来实现程序功能,但指令是使用常量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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())

运行此代码时,会出现以下错误:"name错误:name'fast'未定义"

如有任何帮助和解释,我们将不胜感激。


你需要:

1
2
fan1 = Fan(Fan.FAST, 10, 'yellow', True)
fan2 = Fan(Fan.MEDIUM, 5, 'blue', False)

您需要在FASTMEDIUM前面添加Fan.,因为这些常量是类变量,而不是全局变量。


您的主程序中不存在Fast。它只存在于你的班级里

你需要在课堂上快速地提到

Fan.FAST代替。

除非将SLOW更改为Fan.SLOW,否则使用默认参数实例化风扇对象时也可能会出错。