实例中的属性,类中的属性
动态的创建类通过函数
type创建类:bases基类 dict属性
无type时候
元类创建方法
描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议
__get__():调用一个属性时,触发
__set__():为一个属性赋值时,触发
__delete__():采用del删除属性时,触发
数据描述符,对象访问顺序 依次向下
类属性
数据描述符: __get__ __set__
实例属性
非数据描述符: 没有 __set__
找不到属性触发 __getattr__
使用 python 特性能够很好的管理需要特殊存储逻辑的实例属性。
但是、当大量的属性都需要同样的存储逻辑时、单纯的使用 property 依旧会引起代码冗余。
此时、应该考虑是使用属性描述符还是实现特性工厂函数来解决这个问题。
我给出的建议是:在这种情况下,尽量使用属性描述符、因为你不知道后续会不会有类似但又不同的属性存取逻辑。(例如本博文中的 description 和 weight)
使用属性描述符比之特性工厂有着很大的优势、因为其是类,可以实现众多的面向对象的设计模式。(原文链接:https://blog.csdn.net/BanTianZhong/article/details/91433209)
比较好的python高级编程进阶https://blog.csdn.net/BanTianZhong/article/details/91433209