<p><strong>tl;dr</strong>:对于全局/公共名称,使用<code>AllCaps</code>就像XORcist所说的:</p>
<pre><code>class Logger:
pass
AliasLogger = Logger
</code></pre>
<p>对于函数参数和函数局部变量,请清楚地表明您正在处理具有如下描述性名称的类对象:</p>
<pre><code>def some_func(logger_class):
pass
</code></pre>
<p>或者其他类似的事情</p>
<pre><code>def some_func(my_class_classobj):
pass
</code></pre>
<p>当单词<code>"class"</code>实际在类名中时。有关<code>classobj</code>,另请参见<code>class_</code>和<code>klass</code>。</p>
<hr/>
<p><strong>分析/动机(长版)</p>
<p>没有透彻的阅读,但乍一看<a href="http://www.python.org/dev/peps/pep-0008/" rel="noreferrer">PEP 8</a>似乎并没有明确说明这一点(谷歌的python风格指南也没有)。</p>
<p>因为在python中,变量名可能只是另一个<a href="https://docs.python.org/2/reference/executionmodel.html#naming-and-binding" rel="noreferrer">name binding</a>,所以在我看来,将该名称与定义块绑定还是稍后将<code>=</code>等号绑定到某个对象并不重要。</p>
<p>为此,我同意<a href="https://stackoverflow.com/a/13766060/611007">XORcist</a>在模块级“alias”引用应该遵循您的类命名标准,可能是AllCaps:</p>
<pre><code>class MyClass(object):
pass
# good
ReferenceToClass = MyClass
</code></pre>
<p>然而,当涉及到参数和变量名时,应该应用<code>lowercase_underscores</code>,对吧?我只对这个不满意,因为它会把你推到实例和类引用的模棱两可中。有一种可能性是,全小写的名称可能是试图暗示对象是实例。为此,我建议将所有小写的类引用变量名加上“class”后缀,如下所示:</p>
<pre><code>class Logger(object):
pass
def function_expecting_class_reference(logger_class):
pass
</code></pre>
<p>我将示例类<code>MyClass</code>重命名为<code>Logger</code>,因为在实际情况下只有少数类名包含字符串<code>"class"</code>。不过,在后一种情况下,我建议再次避免描述性命名的模糊性。例如,您可以使用<code>classobj</code>后缀:</p>
<pre><code>class MyClass(object):
pass
def function_expecting_class_reference(another_param, my_class_classobj):
ReferenceToClass = MyClass
</code></pre>
<p>我倾向于使用后缀<code>klass</code>,比如<code>my_class_klass</code>。不是每个人都能得到后者,但不管怎样,我还没有测试他们是否能把前者变得更好。</p>