Python 类方法和属性的命名约定
命名类属性及其方法(函数)的最佳实践是什么 创建类的实例:Python 类方法和属性的命名约定,python,class,methods,attr,Python,Class,Methods,Attr,命名类属性及其方法(函数)的最佳实践是什么 创建类的实例: a = Base() 了解此类中可用的方法和属性: print dir(a) 获取此输出: ['__doc__', '__init__', '__module__', 'name', 'print_this'] 通过读取dir()输出中的名称,不可能看到变量(类属性)和方法(类函数)的位置 要使用什么命名约定来区分变量与函数(或属性与方法)?方法通常应该包含一个动词,例如打印此,计算该,保存,因为它们执行一些操作 属性和属性只是一
a = Base()
了解此类中可用的方法和属性:
print dir(a)
获取此输出:
['__doc__', '__init__', '__module__', 'name', 'print_this']
通过读取dir()输出中的名称,不可能看到变量(类属性)和方法(类函数)的位置
要使用什么命名约定来区分变量与函数(或属性与方法)?方法通常应该包含一个动词,例如
打印此
,计算该
,保存
,因为它们执行一些操作
属性和属性只是一个简单的名词,例如名称
,状态
,计数
,因为它们只包含一个值,或者在属性的情况下,基础函数应该计算并返回一个值,而没有其他副作用
你的问题很模糊:
- 是关于Python中的命名约定吗?对此,您应该参考
- 是关于如何通过查看方法和属性的名称来区分它们吗?关于这一点,请参见上面我的经验法则
- 它是关于如何以编程方式区分方法和属性的吗?在这种情况下,您可以使用
模块提供明确的答案,例如: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
属性
应该获取属性变量样式还是实例方法样式?根据上下文的不同,它们同样有效。在dir(a)中为name打印{name:type(a[name])
-现在您知道了类型这个问题没有正确的答案。“我应该使用什么命名约定?”布尔语有点难以命名x.printable
是可以的,但是y.calculate\u slow
是一种模糊的方法,基于名称aloneThecallable()
技巧并不总是有效。如果一个属性或属性包含一个可调用项怎么办?@glglgl很好。。。已将其更改为使用inspect.ismethod
@Eric-对于布尔值,在变量前面加上“is”或“do”。例如,'is_printable'和'do_calculation_slow'。@CraigS.Anderson:是我同意的,但作为一个祈使动词,do_u
对我来说强烈暗示着“方法”
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