You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python类构造函数中使用常量报错,寻求合规解决方案

解决Python类构造函数中使用类常量的错误

嘿,我太懂你这种卡一上午的憋屈感了——你遇到的问题本质是类定义还没完全完成时,Python找不到你定义的类常量

你想啊,Python解析类代码是有顺序的:先处理类体里的常量(SLOWMEDIUM这些),然后才会去解析__init__方法。但在__init__的参数默认值里直接写SLOW时,类Fan还没完全创建出来,Python根本不知道这个名字指向啥,自然就报错了。

修复方案超简单:给常量加类名前缀

__init__里的默认参数从SLOW改成Fan.SLOW就行,这样Python就能明确找到类级别的常量了。修改后的完整代码如下:

class Fan:
    SLOW = 1
    MEDIUM = 2
    FAST = 3
    def __init__(self, speed=Fan.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
    
    # 可以继续补充你的其他getter/setter方法
    def getRadius(self):
        return self.__radius
    
    def getColor(self):
        return self.__color
    
    def isOn(self):
        return self.__on

额外小技巧

如果在类的其他实例方法里要引用这些常量,除了用Fan.SLOW,还可以用self.__class__.SLOW——这样如果后续有子类继承Fan并修改常量值,代码能自动适配子类的常量,灵活性更高。

改完之后,你就不用再在getter里写繁琐的if/else了,直接用类常量初始化和访问属性完全符合要求~

内容的提问来源于stack exchange,提问作者Daniel Miller

火山引擎 最新活动