面向对象的三大特性之类的封装

面向对象的三大特性之类的封装

正常八股文如下:

 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。

    对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。使用封装有三大好处:


1、良好的封装能够减少耦合。


2、类内部的结构可以自由修改。


3、可以对成员进行更精确的控制。


4、隐藏信息,实现细节。

    封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
 

俺还是同样的话:说这么多也没啥用,你不会完全懂得到底什么叫做封装,让我们直接上代码吧!!!

'''
封装最重要的意义:
    防止该类的代码和数据被外部类定义的代码随机访问
1、私有变量:将实例变量变成私有变量
    方法:加两个下划线__
    注:私有变量在类的内部能够访问,在类的外部是不能够访问的
问题1:如果想让外部能够访问咋办?
答:通过内部定义方法,然后外部调用这个方法进行访问。外部能够变相的访问到私有属性,但是外部不能够修改私有属性的值!
    修改值干嘛的,都是要通过内部的方法去操作

2、私有方法:也可以把方法变成私有方法,
            同样在方法名前面加两个下划线__
注:私有方法在类的内部能够访问,在类的外部是不能够访问的

问题2:如果想让外部能够访问咋办?
答:通过内部定义方法,然后外部调用这个方法进行访问。外部能够变相的访问到私有方法,但是外部不能够修改私有方法!
    修改值干嘛的,都是要通过内部的方法去操作

3、问题3:外部非要直接访问怎么办?(下面这种方法也可以进行修改   私有属性的值!!)
答:实例名._(下划线)+类名

4、问题4:能否在外部进行私有属性的创立
答:一般情况下是不能,只有在实例的创建过程中,创建私有属性才能够创建成功
'''
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.__live_value=100
        self.__sex='女'

    def get_value(self):
        print('%s的生命值为%s'%(self.name,self.__live_value))

    def modify_value(self):
        self.__live_value-=10
        print('%s的生命值被修改,减少了十点为:%s'%(self.name,self.__live_value))

    def __private_age(self):
        print('真实的性别为:%s'%self.__sex)

p1=Person('小李',11)
#只能通过类内部的方法才能够访问私有属性的值
p1.get_value()
#只能通过类的内部方法才能修改私有属性的值
p1.modify_value()
#私有方法外部访问方式
p1._Person__private_age()

#私有属性的外部访问方式
print(p1._Person__live_value)



封装最重要的意义:
 
  防止该类的代码和数据被外部类定义的代码随机访问
1、私有变量:将实例变量变成私有变量
    方法:加两个下划线__
    注:私有变量在类的内部能够访问,在类的外部是不能够访问的


问题1:如果想让外部能够访问咋办?
答:通过内部定义方法,然后外部调用这个方法进行访问。外部能够变相的访问到私有属性,但是外部不能够修改私有属性的值!
    修改值干嘛的,都是要通过内部的方法去操作

2、私有方法:也可以把方法变成私有方法,
            同样在方法名前面加两个下划线__

注:私有方法在类的内部能够访问,在类的外部是不能够直接访问的

问题2:如果想让外部能够访问咋办?
答:通过内部定义方法,然后外部调用这个方法进行访问。外部能够变相的访问到私有方法,但是外部不能够修改私有方法!
    修改值干嘛的,都是要通过内部的方法去操作

3、问题3:外部非要直接访问怎么办?(下面这种方法也可以进行修改   私有属性的值!!)
答:
实例名._(下划线)+类名

4、问题4:能否在外部进行私有属性的创立
答:一般情况下是不能,只有在实例的创建过程中,创建私有属性才能够创建成功

猜你喜欢

转载自blog.csdn.net/qq_46044325/article/details/127026928