首页 Python基础入门视频教程 Python类属性和对象属性操作本质对比演示
pay pay

Python类属性和对象属性操作本质对比演示

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

摘要: 类其实也是一个对象,那么给类增加属性和给对象增加属性就是同样的方法

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

类其实也是一个对象,那么给类增加属性和给对象增加属性就是同样的方法。

class Infor:
    pass

msg = Infor()
msg.age = 19
msg.age = 5

# 类其实也是一个对象,那么给类增加属性和给对象增加属性就是同样的方法
Infor.name = 'Tom'  # 给类增加属性
print(Infor.name)
print(Infor.__dict__)

print(msg.name)  # 通过对象访问类属性,但是这种访问不是很合理,可以把类属性直接写入到类中,如下:

class Ability:
    name = 'jerry'
    age = 22

print(Ability.name)  # 直接使用类名访问属性

per = Ability()
print(per.name)  # 使用对象访问类属性
# 使用对象查找属性的时候首先查找的是对象自己的属性,如果没有找到,再到类中查找
per.age = 111  # 给对象增加一个和类属性同名的属性
print(per.age)  # 返回结果是111,属于对象属性,说明优先访问对象自己的属性,删除对象属性后又返回22

# 从上面的age返回结果发现类中的age和对象属性中的age其实不是同一个属性,也不是同一个变量,因为变量不可变
print(id(Ability.age))
print(id(per.age))

# 从上面又得到一个观点,我们想修改类中的属性值,不能直接通过对象来修改
per.age = 123  # 这是给对象属性重新赋值,如果对象没有属性则是在给对象添加属性,并没有修改类中的属性
Ability.age = 999  # 只有通过类名才能修改类中属性值

# 删除类属性的原理也是一样,只能通过类名.属性的方式操作
# del Ability.name
# print(Ability.name)  # AttributeError: type object 'Ability' has no attribute 'name'

# 总结:类属性的增删改查操作只有查找是从对象开始一直查到类属性中,其他都需要通过类名来操作类属性

 

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