命名规则
xx
公有变量。
_x
单前置下划线,私有化属性或方法。当使用from module import * 导入时,_x变量并不会导入,类对象和子类可以访问。
__xx
双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问。实际上通过namemangling方式可以调用,访问不了是因为名字重整,如\_x会被重整为_className__x, className为类名。
__xx__
双前后下划线,用户名字空间的魔法对象或属性。例如:_init_ , __ 。一般是系统提供的。
xx_
单后置下划线,用于避免与Python关键词的冲突。
私有属性添加getter和setter方法
1 | class Money(object): |
使用property升级getter和setter方法
1 | class Money(object): |
使用property取代getter和setter方法
@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用:
1.将方法转换为只读
2.重新实现一个属性的设置和读取方法,可做边界判定1
2
3
4
5
6
7
8
9
10
11
12
13
14class Money(object):
def __init__(self):
self.__money = 0
def money(self):
return self.__money
def money(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型数字")