1 #coding:utf-8 2 __author__="tang" 3 4 #第一个层面的封装:类就是麻袋,本身就是一种封装 5 #第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问 6 7 # 任何以单下滑线开头的名字都是内部的,私有的,只在类的内部使用,外部无法访问 8 # 私有属性、方法——Python并没有真正的私有化支持,但可用下划线得到伪私有 9 # 尽量避免定义以下划线开头的变量 10 # (1)_xxx "单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供的接口进行访问;不能用'from module import *'导入 可以永 from xx import _func 11 # (2)__xxx 类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。)," 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。 12 # (3)__xxx__ 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__() 代表类的构造函数。 13 # # 14 15 class People: 16 __star="earth" 17 def __init__(self,id,name,age,salary): 18 print('----->',self.__star) 19 self.id=id 20 self.name=name 21 self._age=age 22 self.salary=salary 23 24 25 def get_id(self): 26 print("我是私有方法呀,你的id",self.id) 27 28 # 接口函数 访问函数 29 def get_star(self): 30 print(self.__star) 31 32 #print(People.__dict__) 33 34 p1=People("165661","alex",20,100000) 35 print(p1._age) 36 # print(p1._star) 37 # print(p1._People__star) 38 39 p1.get_star()