python学习之封装

封装(内部直接访问,外部无法访问到)
封装是啥,抛开面向对象,你单去想什么是装,装就是拿来一个麻袋,把小猫,小狗,一起装进麻袋,(属性字典__dict__)
什么是封,封就是把麻袋封上口子。

在面向对象中这个麻袋就是你的类或者对象,类或者对象这两麻袋内部装了数据属性和函数属性,那么对于类
和对象来说,“封”的概念从何而来,其实封的概念代表隐藏

第一个层面的封装:类就是麻袋,这本身就是一种封装
第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问 '_','__'

class People:
__star='earth111111111111'
__star1='earth111111111111'
__star2='earth111111111111'
__star3='earth111111111111'
def __init__(self,id,name,age,salary):
print('----->',self.__star)
self.id=id
self.name=name
self.age=age
self.salary=salary

def get_id(self):
print('我是私有方法啊,我找到的id是[%s]' %self.id)

#访问函数
def get_star(self):
print(self.__star)

p1=People('123123123123','alex','18',100000000)
# print(p1.__star)
print(People.__dict__)
# print(p1.__star)
print(p1._People__star)
#
# p1.get_star()
p1.get_star()

第三个层面的封装:明确区分内外,内部的实现逻辑,外部无法知晓,并且为封装到内部的逻辑提供一个访问
接口给外部使用

python不依赖语言特性去实现第二层面的封装,而是通过遵循一定的数据属性和函数属性的命名约定来达到封的效果

约定一:任何以单下划线开头的名字都应该是内部的,私有的

约定二:双下划线开头的名字`

原文地址:https://www.cnblogs.com/jinpingzhao/p/12745828.html