首页 Python基础入门视频教程 Python公有属性,私有化属性,受保护属性的访问对比
pay pay

Python公有属性,私有化属性,受保护属性的访问对比

日期: 二月 14, 2023, 8:38 a.m.
阅读: 362
作者: Python自学网-村长

摘要: 面向对象-属性-类属性,私有化属性,受保护属性的访问区别

00:00 / 9:00
1x
2x
1.5x
1.25x
1x
0.8x
0.5x
>
面向对象
    1. 第1课:Python面向对象程序设计
      9分钟
    2. 第2课:类属性和对象属性
      9分钟
    3. 第3课:类属性和对象属性操作本质对比
      9分钟
    4. 第4课:类属性和对象属的区别和使用对比
      9分钟
    5. 第5课:Python类方法的创建
      9分钟
    6. 第6课:实例方法,类方法和静态方法
      9分钟
    7. 第7课:三种方法访问权限对比
      9分钟
    8. 第8课:面向对象基础-元类
      9分钟
    9. 第9课:类属性,私有化属性,受保护属性的访问区别
      9分钟
    10. 第10课:面向对象-属性-私有化属性
      9分钟
    11. 第11课:面向对象-属性-只读属性
      9分钟
    12. 第12课:property操作只读属性
      9分钟
    13. 第13课:属性安全补充
      9分钟
    14. 第14课:内置属性
      9分钟
    15. 第15课:类属性,实例属性,初始化属性
      9分钟
    16. 第16课:面向对象-方法-方法回顾
      9分钟
    17. 第17课:内置特殊方法-对象信息重写
      9分钟
    18. 第18课:内置特殊方法-调用
      9分钟
    19. 第19课:内置特殊方法-索引操作
      9分钟
    20. 第20课:内置特殊方法-切片
      9分钟
    21. 第21课:内置特殊方法-对象比较
      9分钟
    22. 第22课:内置特殊方法-上下文环境的布尔值
      9分钟
    23. 第23课:内置特殊方法-迭代和遍历
      9分钟
    24. 第24课:内置特殊方法-描述器
      9分钟
    25. 第25课:内置特殊方法-装饰器
      9分钟
    26. 第26课:内置特殊方法-对象生命周期
      9分钟
    27. 第27课:内置特殊方法-面向对象小结案例
      9分钟
    28. 第28课:三大特性-继承和继承关系
      9分钟
    29. 第29课:三大特性-资源的继承和使用
      9分钟
    30. 第30课:三大特性-资源的覆盖或累加
      9分钟
    31. 第31课:三大特性-多态
      9分钟
    32. 第32课:面向对象-抽象类
      9分钟

面向对象-属性-类属性,私有化属性,受保护属性的访问区别。

'''
私有化属性:为了部分属性的安全,给类属性设定一个限制,让此属性只能在类的内部进行访问,实例化的对象无法访问
私有化属性本质就是把之前访问权限从一个较大的范围给压缩到一个指定的范围
一般的公有类属性访问可以通过:类中的方法访问,对象访问,类直接方位
私有属性可以通过:只能在类的内部访问
'''
# 注意:python语言中没有真正意义上的私有属性,但是可以通过下划线完成一种伪私有效果
# 类属性和方法以及实力属性和方法都遵循同样的规则
# x   _y   __z
class Person:
    name = 'Tom'  # 公有属性
    _age = 18  # 受保护属性
    __sex = '男'  # 私有属性

    def func(self):
        print(Person.name)
        print(self.name)

        print(Person._age)
        print(self._age)

        print(Person.__sex)
        print(self.__sex)
        # 在类的内部访问公有属性,私有属性和受保护属性都行

p = Person()
p.func()
print('*' * 50)

print(Person.name)
print(p.name)

print(Person._age)  # 强行访问受保护属性的时候会有黄色波浪线来警告
print(p._age)

# print(Person.__sex)  # AttributeError: type object 'Person' has no attribute '__sex'
# print(p.__sex)  # AttributeError: 'Person' object has no attribute '__sex'
# 从类的外部通过类和对象只能访问公有属性和受保护属性
'''
总结:
公有属性:通过类的内部,对象调用,子类调用,模块之间的调用都能访问
受保护的属性:通过类的内部可以访问,对象调用,子类调用,模块调用也能强行访问,但是有黄色波浪线警告提示
私有属性:一般只能在类的内部访问,
'''
# ----以下有待思考----
# 模块之间调用使用import XXX的时候不能访问,
# 使用form XXX import * 的时候加上__all__ = []才能访问,但是这里和受保护属性一样
# 思考:import XXX 和 form XXX import * 有什么不同

 

原创视频,版权所有,未经允许,切勿转载,违者必究!
回顶部