封装性是面向对象是三大特征之一,python语言没有与封装性相关的关键字,它通过特定是名称实现对变量和方法的封装。
私有变量
默认情况下python中的变量的公有的,可以在类的外部访问他们。如果想让它们成为私有变量,可以在变量前加上双下划线“__”
class Animal(object):
"""定义动物类"""
def __init__(self, age, sex=1, weight=0.0):
self.age = age
self.sex = sex
self.__weight = weight
def eat(self):
self.__weight += 0.2
print(self.__weight)
print("eat...")
def run(self):
self.__weight -= 0.1
print("run...")
a1 = Animal(2, 0, 10.0)
# print('{0:0.2f}'.format(a1.wright))
a1.run()
a1.eat()
_weight 是私有变量,在类内部访问没有问题,但是如果在外部访问则会发生错误。
python中并没有严格意义上的封装,所谓的私有变量只是形式上的限制。如果想在类的外部访问这些私有变量也是可以的,例如上述代码中 a1.wright
改为a1._Animal__weight
就可以访问了,但是这重是不符合规范的,会破坏封装。