Python高阶 -- 数据和自省

类里面定义的变量叫做类属性,类属性又分为私有属性和公有属性

类属性可以通过类和实例对象去访问

 

私有属性:

  -- 单下划线开头:_attr

  -- 双下划线开头:__attr

  私有属性也能继承

  

 

 __dict__:

  -- 类调用__dict__属性,返S类属性和方法的字典

  -- 实例调用__dict__属性,返回的值实例相关的属性和方法,如查看类的所有属性和方法:print(Test.__dict__)

       -- 子类继承父类后,查看子类的所有属性和方法不再生成__dicit__属性

 

 

内置属性:__slots__

  指定类对象所能绑定的属性,其它的属性就不能在init中新增了,限制属性,节约了内存

  默认情况下,类的实例有一个字典用于存储属性,这对于具有很少实例变量的对象会浪费空间。可通过在类定义中定义__slots__来覆盖默认__dict__行为。__slots__声明接收一个实例变量序列,并在每个实例中只保留足够保存每个变量值的空间,因为没有为每个实例创建__dict__,所以节省空间

  __slots__不能继承的,只对当前这个类有作用;

  

   

  

 

自定义属性访问

  object.__getattr__:没有找到属性时,触发AttributeError异常时会调用此方法,当属性查找在通常的地方没有找到该属性时调用

  object.__getattribute__:查找属性时,第一时间会调用该方法

  object.__setattr__:设置属性时,调用该方法设置属性

  object.__delattr__:在del_obj.attr删除属性时触发

 

posted @   哩子吖  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示