私有属性

本贴最后更新于 1218 天前,其中的信息可能已经事过景迁

前言:上两篇文章我们讲了类属性和实例属性,想必大家都学会了,接下来我们来看一下私有属性,希望这篇博客对大家有帮助。

一、私有属性定义

class Dog:
    __age = 20 #类私有属性
    def __init__(self):
        self.__name = "老王" #实例私有属性

二、私有属性访问

  1. 类内部访问私有属性【可以访问】
    class Dog:
        __age = 20
        def __init__(self):
            self.__name = "老王"
    
        def test_01(self):
            print("类内部访问实例私有属性__name =",self.__name)
            print("类内部访问类私有属性__age =",self.__age)
    
    if __name__ == '__main__':
        cl = Dog()
        cl.test_01()
    输出
    类内部访问实例私有属性__name = 老王
    类内部访问类私有属性__age = 20
    
  2. 类外部访问私有属性【不能访问】
    class Dog:
        __age = 20
        def __init__(self):
            self.__name = "老王"
    
    if __name__ == '__main__':
        cl = Dog()
        print(cl.__age) #访问类私有属性
        print(cl.__name) #访问实例私有属性
    输出
    Traceback (most recent call last):
      File "/Usersningmengban/webservices/tttt.py", line 21, in <module>
        print(cl.__age)
    AttributeError: 'Dog' object has no attribute '__age'
    
    结论类外部不能访问私有属性(类私有属性实例私有属性)
    
  3. 类外面强行访问私有属性
    class Dog:
        __age = 20
        def __init__(self):
            self.__name = "老王"
    
    if __name__ == '__main__':
        cl = Dog()
        print(Dog._Dog__age) # 类强行访问类属性
        print(cl._Dog__name)# 实例强行访问实例属性
    输出
    20
    老王
    
    结论私有属性在类外面不可访问也不是绝对的虽然可以强制访问但是不推荐使用
    
1 操作
haili 在 2021-07-15 17:34:44 更新了该帖
1 回帖
请输入回帖内容 ...