私有属性

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

一、私有属性定义

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 更新了该帖
回帖
请输入回帖内容 ...