美文网首页
P 面向对象 | 伪私有属性与私有方法(科普)

P 面向对象 | 伪私有属性与私有方法(科普)

作者: Ricsy | 来源:发表于2019-10-04 16:45 被阅读0次


一、私有属性与私有方法

Python中,是没有真正意义上的私有的

  • 私有属性与私有方法是对象的隐私,通常用于做一些内部的事情,外界与子类都不能直接访问
名称 描述
私有属性 对象不希望公开的属性
私有方法 对象不希望公开的方法
  • 定义方式
    定义属性名或方法名时,在属性名或方法名的前面加两个下划线,这样定义的就是私有属性或私有方法

提示:

  • 子类对象不能再自己的方法内部,直接访问父类的私有属性或私有方法,但是可以通过父类的公有方法进行间接访问

eg:

class Women:
    def __init__(self, name):
        self.name = name
        self.__age = 18
        self.age = 18

    def __secret(self):
        # 在对象的方法内部是可以访问对象的私有属性的
        print("%s的年龄是%d" % (self.name, self.__age))

    def secret(self):
        # 在对象的方法内部是可以访问对象的私有属性的
        print("%s的年龄是%d" % (self.name, self.__age))


if __name__ == '__main__':
    xiaomei = Women('小美')
    print(xiaomei.age)
    xiaomei.secret()
    # # 私有属性不能直接被外界访问
    # print(xiaomei.__age)
    # # 私有方法不能直接被外界调用
    # xiaomei.__secret()


二、伪私有属性与伪私有方法

Python中,是没有真正意义上的私有的,只是在给属性、方法命名时,对名称做了一些特殊处理,使外界无法访问到

  • 处理方式:
    _类名__名称
class Women:
    def __init__(self, name):
        self.name = name
        self.__age = 18
        self.age = 18

    def __secret(self):
        # 在对象的方法内部是可以访问对象的私有属性的
        print("%s的年龄是%d" % (self.name, self.__age))

    def secret(self):
        # 在对象的方法内部是可以访问对象的私有属性的
        print("%s的年龄是%d" % (self.name, self.__age))


if __name__ == '__main__':
    xiaomei = Women('小美')
    print(xiaomei.age)
    xiaomei.secret()
    # 私有属性不能直接被外界访问
    print(xiaomei._Women__age)
    # 私有方法不能直接被外界调用
    xiaomei._Women__secret()


更新中......


相关文章

网友评论

      本文标题:P 面向对象 | 伪私有属性与私有方法(科普)

      本文链接:https://www.haomeiwen.com/subject/xalspctx.html