python3 面对对象编程三大特性之一:封装

python3 面对对象编程三大特性之一:封装,第1张

概述python3 面对对象编程三大特性之一:封装

封装约定

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

class People:    _star='earth'    def __init__(self,ID,name,age,salary):        self.ID=ID        self.name=name        self._age=age        self._salary=salary    def _get_ID(self):        print('我是私有方法啊,我找到的ID是[%s]' %self.ID)#我们明明约定好了的,只要属性前加一个单下划线,那他就属于内部的属性,不能被外部调用了啊,为何还能调用???print(People._star)p1=People('3706861900121221212','alex',28,10)print(p1._age,p1._salary)p1._get_ID()

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

class People:    __star='earth'    def __init__(self,salary):        self.ID=ID        self.name=name        self.__age=age        self._salary=salary    def _get_ID(self):        print('我是私有方法啊,我找到的ID是[%s]' %self.ID)print(People.__dict__)    #__star存到类的属性字典中被重命名为_People__starp1=People('333333',18,10)print(p1.__dict__)        #__age存到类的属性字典中被重命名为_People__age


注意:python中封装的私有属性是可以访问的

class People():    _star = '地球'    __population = '13亿'p1 = People()print(p1._star)                   # 地球print(People.__dict__)            # '_People__population': '13亿'print(p1._People__population)     # 13亿人

这是因为双下滑线开头的属性在继承给子类时,子类是无法覆盖的(原理也是基于python自动做了双下滑线开头的名字的重命名工作)


封装的三个层面

    第一个层面的封装:类就是麻袋,这本身就是一种封装

    第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问

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


接口函数:

class People():    __star = '地球'    def get_star(self):        print(self.__star)p1 = People()p1.get_star()


总结

以上是内存溢出为你收集整理的python3 面对对象编程三大特性之一:封装全部内容,希望文章能够帮你解决python3 面对对象编程三大特性之一:封装所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1198329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存