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的常用术语

----封装/接口

----合成

----派生/继承//继承结构

----泛化/特化

----多态

----自省/反射

posted @ 2019-11-04 17:28  学python的菜鸟  阅读(152)  评论(0编辑  收藏  举报