Python风格:命名空间使用小写类名?

6 投票
4 回答
2044 浏览
提问于 2025-04-16 08:11

我知道在PEP-8规范中,类名的写法是ClassName。不过,我们有时候会用一些小类来充当伪命名空间、枚举等。换句话说,这些并不是真正会被实例化的类。我们选择用小写字母来命名这些“类”,因为它们实际上更像是命名空间或枚举的名字。

有没有其他人也有自己公司的命名风格,或者其他实现相同效果的方法呢?

举个例子:

import urllib2

class config:  # pseudo-namespace for module-level config variables
    api_url = 'http://example.com/api'
    timeout = 1.5
    debug = True

class countries:  # pseudo-enum
    new_zealand = 1
    united_states = 2

def func():
    if config.debug:
        print 'Calling func()'
    return urllib2.urlopen(config.api_url)

4 个回答

1

为什么不呢

class PseudoNamespace: pass

config = PseudoNamespace()
config.api_url = 'http://example.com/api'
config.timeout = 1.5
config.debug = True

countries = PseudoNamespace()
config.new_zealand = 1
config.united_states = 2

如果你真的在乎PEP的话?

4

你还可以创建一个叫做 config 的模块,里面可以放入以下内容:

api_url = 'http://example.com/api'
timeout = 1.5
debug = True
5

对于所有的枚举和常量,我更喜欢使用大写的形式。

class COUNTRIES:  # pseudo-enum
    NEW_ZEALAND = 1
    UNITED_STATES = 2

如果类名不是全部大写,我也觉得没问题。因为无论如何,它都是和枚举值关联在一起的。我总是会像这样使用它:Countries.NEW_ZEALAND,这让我知道它是一个枚举。

class Countries:  # pseudo-enum
    NEW_ZEALAND = 1
    UNITED_STATES = 2

撰写回答