面向对象速查笔记(三)

Published on 2018 - 01 - 09

设置私有属性和私有方法

class Women:
    """
    私有属性或方法,只能在类内部使用,不可以在外部访问
    只需要在属性或方法前加两个下划线即可设置私有
    """
    def __init__(self, name):

        self.name = name
        self.__age = 18

    def __secret(self):

        print("%s的年龄是%d" % (self.name, self.__age))


xiaofang = Women("小芳")


"""
xiaofang.__secret()
print(xiaofang.__age)
会报错

如果将类中 __secret前面的两个下划线去掉,
那么可以打印出18岁的结果,但print(xiaofang.__age)
仍然不可以访问,因为__age仍然是私有属性
(没有创建对象,直接运行方法,属于内部访问)
"""

其实python内没有真正的私有,只不过是解释器做了些特殊处理,通过特殊方法也可以访问到私有属性或方法。但是不推荐这么做。

print(xiaofang._Women__age)
xiaofang._Women__secret()