类方法和属性的命名约定

alp*_*ric 7 python methods class attr

命名类属性及其方法(函数)的最佳实践是什么.

class Base():   
    def __init__(self):
        self.name = 'My Name'
    def print_this(self):
        print "Hello"
Run Code Online (Sandbox Code Playgroud)

创建类的实例:

a = Base()
Run Code Online (Sandbox Code Playgroud)

了解此类中可用的方法和属性:

print dir(a)
Run Code Online (Sandbox Code Playgroud)

获得此输出:

['__doc__', '__init__', '__module__', 'name', 'print_this']
Run Code Online (Sandbox Code Playgroud)

从读取dir()输出中的名称,不可能看到变量的位置(类属性)和方法(类函数).

用于区分变量与函数(或attrs与方法)的命名约定是什么?

Ane*_*pic 6

方法一般应该有一个动词在其中,例如print_this,calculate_that,save,因为他们执行一些动作.

属性和特性将只是一个裸露的名词,例如name,status,count因为它们只包含一个值,或者在一个属性的情况下,底层函数应当计算并返回一个值,而无需其他的副作用.

你的问题很模糊:

  • 是关于Python中的命名约定?为此,您应该参考着名的PEP8文档

  • 是关于如何通过查看他们的名字来区分方法和属性?为此,请参阅上面的经验法则

  • 是关于如何以编程方式区分方法和属性?在这种情况下,您可以使用该inspect模块提供明确的答案,例如:

    import inspect
    
    for attr in dir(a):
        if inspect.ismethod(getattr(a, attr)):
            print '%s is a method' % attr
        else:
            print '%s is an attribute or property' % attr
    
    Run Code Online (Sandbox Code Playgroud)

  • @CraigS.Anderson:`is_` 我同意,但作为祈使动词,`do_` 对我来说强烈暗示“方法” (2认同)