类方法和属性的命名约定

时间:2014-01-10 19:17:26

标签: python class methods attr

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

class Base():   
    def __init__(self):
        self.name = 'My Name'
    def print_this(self):
        print "Hello"

创建类的实例:

a = Base()

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

print dir(a)

获得此输出:

['__doc__', '__init__', '__module__', 'name', 'print_this']

通过阅读 dir()输出中的名称,无法看到变量的位置(类属性)以及方法(类函数)的位置。

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

1 个答案:

答案 0 :(得分:5)

方法通常应包含动词,例如print_thiscalculate_thatsave,因为它们会执行某些动作。

属性和属性只是一个裸名词,例如namestatuscount因为它们只包含一个值,或者在属性的情况下,底层函数应该是计算并返回一个值,没有其他副作用。

你的问题很模糊:

  • 它是关于Python中的命名约定吗?为此,您应该参考famous PEP8 document

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

  • 是关于如何以编程方式区分方法和属性?在这种情况下,您可以使用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