python中的类/实例属性命名约定

时间:2015-06-20 13:15:07

标签: python attributes naming-conventions pep8

查看PEP8可以找到变量,函数,常量的命名约定......但是我无法清楚地了解哪个是类级别和实例级别属性的命名约定。

目前,我自己的风格为类和实例级别带来了一些常量与变量的区别,例如:

  • 要被视为常量或默认值的类级别属性遵循常量约定:DEFAULT_VALUE
  • 要由类的任何实例或任何继承类共享和修改的类级别属性也按照常量约定命名:COMMON_ATTRIBUTE
  • 由实例直接定义并仅由它们使用/可见的属性遵循变量约定:instance_attribute

这里有一个非常愚蠢的例子,显示了这些用例:

class Parent(object):

    DEFAULT = 1
    COUNTER = 0    # counts times default value has been accessed

    def __init__(self, value=None):
        self.value = value or self.DEFAULT

    def is_default(self):
        return self.value is self.DEFAULT

    def get_value(self):
        if self.is_default():
            Parent.COUNTER += 1
        return self.value + self.COUNTER


class Child(Parent):
    """Use Parent's value + 1."""
    def __init__(self, value=None):
        self.value = (value or self.DEFAULT) + 1

这是一个(愚蠢的)用例:

>>> child = Child()
>>> child.is_default()
False
>>> parent = Parent(2)
>>> parent.is_default()
False
>>> default_parent = Parent()
>>> default_parent.is_default()
True
>>> child.get_value()
2
>>> parent.get_value()
2
>>> default_parent.get_value()
2
>>> child.get_value()
3
>>> default_parent.get_value()
3
>>> parent.get_value()
4

我最后的问题是:这是否符合(官方)标准,还是违反了我可能忽略的任何其他惯例?

0 个答案:

没有答案