在Python中命名常量类属性

我的东西

我有一个class属性,它在一个类中恒定的,其子类或同级类中具有不同的值该属性用于基类的方法中。

在这种情况下,我应该将属性表示address为常量,即像SCREAMING_SNAKE_CASE一样ADDRESS吗?

例如,

class BaseClass:
    address = ''

    @classmethod
    def print_address(cls):
        print(cls.address)

class SubClass1(BaseClass):
    address = 'sub1'

class SubClass2(BaseClass):
    address = 'sub2'        

还是有更好的方法来做同样的事情?

公克

常量通常在模块级别定义,并以所有大写字母书写,并用下划线分隔单词。示例包括MAX_OVERFLOW和TOTAL。

因此,如果它是一个类属性,就PEP-8而言,它不被视为常量。

但是,现实世界中很少有例外。

Django模型的常数

在Django文档的示例中,choicesof字段的常量被封装到模型本身中:

class Student(models.Model):
    FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    GRADUATE = 'GR'
    YEAR_IN_SCHOOL_CHOICES = [
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
        (GRADUATE, 'Graduate'),
    ]
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )

资料来源:模型领域参考

枚举

enum.Enum使用SCREAMING_SNAKE_CASE作为枚举值。例如:

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

来源:enum.Enum文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:布尔/标志类属性的命名

来自分类Dev

在Python中调用类属性

来自分类Dev

可以在PHP函数中设置常量类属性吗?

来自分类Dev

在Python中列出类属性及其类型

来自分类Dev

Python类中的类属性阴影

来自分类Dev

在Python中处理许多参数/类属性

来自分类Dev

Python类中的类属性阴影

来自分类Dev

在python中创建和调用类属性

来自分类Dev

在C ++中命名常量

来自分类Dev

Python类属性错误

来自分类Dev

Python静态类属性

来自分类Dev

在Python中为类属性创建“标准属性”

来自分类Dev

如何在Python中修改实例属性而不是类属性

来自分类Dev

类属性中的属性错误

来自分类Dev

如何从 Python 中的类中访问类属性

来自分类Dev

Python,使用类属性或函数中变量的速度更快?

来自分类Dev

Python中的线程:类属性(列表)不是线程安全的吗?

来自分类Dev

在python单元测试中模拟类属性的更好方法

来自分类Dev

在python中如何处理可变的类属性

来自分类Dev

在Python 2.7中使用变量引用类属性

来自分类Dev

以与Python中声明的顺序相同的顺序读取类属性

来自分类Dev

如何在Python的Decorator中访问类属性?

来自分类Dev

python类属性在函数中更新时未更新

来自分类Dev

如何在Python Mockito中模拟类属性

来自分类Dev

如何禁止在Python中创建新的类属性?

来自分类Dev

如何在python中为类属性添加方法?

来自分类Dev

在Python中的多个类之间共享类属性

来自分类Dev

Python访问父构造函数中的派生类属性

来自分类Dev

在 Python 中访问类属性时遇到问题