python学习67-面向对象-封装
封装
1.什么是封装?
根据名字寓意为:把一个东西装起来,然后密封,类似这样的面向对象的编程为封装。
真正的封装是明确的区别内外,只能在内部用,外部无法调用。
2.
举例:
class Car: _star = 'benchi' # "_"表明是隐藏属性,不能在外部使用(不代表无法调用到) __star1 = 'baoma' # "__"python给自动重命名,命名为"_Car__star1" def __init__(self,name,type): self.name = name self.type = type def get_type(self): print('%s是%s类型的车' % (self.name,self.type)) c1 = Car('奔驰E600','大型高档轿车') c1.get_type() print('=========================') print(c1._star) print(c1._Car__star1)
运行结果:
奔驰E600是大型高档轿车类型的车 ========================= benchi baoma Process finished with exit code 0
3.意义
第一个层面的封装,就是把东西装进麻袋。 类就是一种麻袋。
第二个层面的封装就是两个约定,单下横线 _,双下横线 __。
第三个层面的封装明确区分内外,外部无法直接调用。
举例:
class Car: _star = 'benchi' # "_"表明是隐藏属性,不能在外部使用(不代表无法调用到) __star1 = 'baoma' # "__"python给自动重命名,命名为"_Car__star1"。理论上对外部隐藏了 def __init__(self,name,type): self.name = name self.type = type def get_type(self): print('%s是%s类型的车' % (self.name,self.type)) def get_star(self): # 接口函数 print(self.__star1) # 内部调用 c1 = Car('奔驰E600','大型高档轿车') c1.get_star()
运行结果:
baoma
Process finished with exit code 0
4.从根本意义上讲python没有从实际上限制你的访问。所以说没有绝对的封装
5.python中关于OOP的常用术语
----封装/接口
----合成
----派生/继承//继承结构
----泛化/特化
----多态
----自省/反射