Python学习笔记:关于Python的“私有方法和属性”以及“伪私有属性和方法”概念的说明,之,python,注意事项


1. 如何创建私有方法、属性

  • 在原本的属性或方法前面添加 __ 就可以将方法或者属性转换成私有属性,例如下面代码中的 __weight __secret()
class Women:

    def __init__(self):              '''初始化'''
        self.name = "Cherry"        '''公有属性'''
        self.__weight = 100         '''私有属性'''

    def public(self):             '''公有方法'''
        print("she love Jerry")

    def __secret(self):              '''私有方法'''
        print("she love Jeffrey")

cherry = Women()

print(cherry.name)
cherry.public()
print(cherry.__weight)
cherry.__secret()

-------> 打印结果:
在这里插入图片描述
可以看出,在一般默认的情况下,私有的属性和方法是无法通过外部访问的。

TIP【访问私有属性的方法】

  • 可以通过调用类中的 非私有方法 来访问私有属性
class Women:

    def __init__(self):
        self.name = "Cherry"
        self.__weight = 100

    def public(self):
        print(self.__weight)        '''使用公有方法来访问私有属性'''

    def __secret(self):
        print(self.__weight)

cherry = Women()
cherry.public()         '''通过公有方法调用私有属性的方是行得通的'''
cherry.__secret()

-------> 打印结果:
在这里插入图片描述
很明显,公有方法是可以访问 类 中的私有属性的,但是私有方法依然不可以,因为从外部根本无法访问私有方法,所以私有方法中包含了什么东西就无所谓了

2. 伪私有属性、方法

  • 其实 python 中没有真正的私有属性和方法,即使是上面的 __weight __secret() 也都是可以通过特殊方法进行访问的。
  • 只需要在访问的时候使用这种格式 对象名._类名__私有方法名 如下代码最后三行所示:
class Women:

    def __init__(self):
        self.name = "Cherry"
        self.__weight = 100

    def public(self):
        print(self.__weight)


    def __secret(self):
        print(self.__weight)

cherry = Women()

print(cherry._Women__weight)   '''使用特殊格式来访问私有属性'''
cherry._Women__secret()            '''使用特殊格式来访问私有方法'''


---------> 输出结果:
> 100
> 100                          '''正常输出'''

这部分的知识点看起来好像有点冗余,但记住,作为一个注意事项,后面的学习可能会用到