__dict__属性

__dict__ 是 Python 中的一个特殊属性,通常存在于大多数 Python 对象中,用于存储该对象的可变属性。

以下是关于 __dict__ 的一些关键点和详细信息:

  1. 存储属性 :对于大多数自定义的 Python 对象,__dict__ 属性包含了这个对象的属性及其对应的值。它以字典的形式存储。

    python 复制代码
    class MyClass:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    obj = MyClass("Alice", 30)
    print(obj.__dict__)  # 输出:{'name': 'Alice', 'age': 30}
  2. 动态属性 :由于 __dict__ 是一个字典,所以你可以动态地为对象添加或修改属性。

    python 复制代码
    obj.gender = "female"
    print(obj.__dict__)  # 输出:{'name': 'Alice', 'age': 30, 'gender': 'female'}
  3. 类的 __dict__ :类也有自己的 __dict__,它存储了类的属性,包括类的方法。

    python 复制代码
    print(MyClass.__dict__)

    输出:

    复制代码
    {'__module__': '__main__', '__init__': <function MyClass.__init__ at 0x0000020D727BA950>, '__dict__': <attribute '__dict__' of 'MyClass' objects>, '__weakref__': <attribute '__weakref__' of 'MyClass' objects>, '__doc__': None}
  4. 不是所有对象都有 __dict__ :为了优化内存使用,某些内置类型和使用了 __slots__ 的类不具有 __dict__ 属性。例如,整数或字符串对象没有 __dict__ 属性。使用 __slots__ 可以限制一个类的实例属性,避免为每个实例创建 __dict__

  5. 限制 __dict__ 访问 :你可以通过重写类的 __setattr____getattr__ 方法来控制如何设置和获取属性,或者通过修改 __dict__ 的访问权限来进行控制。

  6. 性能注意事项 :频繁地访问和修改 __dict__ 可能会影响性能,因为它涉及到字典操作。此外,直接修改 __dict__ 跳过了任何可能存在的特性或描述符,可能导致意外的副作用或错误。

总的来说,__dict__ 提供了一种方便的方式来存储和管理对象的属性,但直接操作它应当谨慎,并确保了解相关的副作用和性能影响。

相关推荐
@LetsTGBot搜索引擎机器人30 分钟前
从零打造 Telegram 中文生态:界面汉化 + 中文Bot + @letstgbot 搜索引擎整合实战
开发语言·python·搜索引擎·github·全文检索
短鼻子小象1 小时前
DeepSeek-OCR:革命性文档识别模型全面解析及实测
python·ai·ocr
合作小小程序员小小店2 小时前
基于可视化天气系统demo,基于python+ matplotlib+request爬虫,开发语言python,数据库无,10个可视化界面,需要的可以了联系。
开发语言·爬虫·python·matplotlib
倔强青铜三2 小时前
苦练Python第71天:一行代码就搭出服务器?别眨眼,http.server真有这么爽!
人工智能·python·面试
倔强青铜三2 小时前
苦练Python第70天:征服网络请求!揭开urllib.request的神秘面纱
人工智能·python·面试
倔强青铜三2 小时前
苦练Python第72天:colorsys 模块 10 分钟入门,让你的代码瞬间“好色”!
人工智能·python·面试
胖哥真不错3 小时前
Python基于PyTorch实现多输入多输出进行BP神经网络回归预测项目实战
pytorch·python·毕业设计·论文·毕设·多输入多输出·bp神经网络回归预测
合作小小程序员小小店3 小时前
web网页开发,旧版在线%考试,判题%系统demo,基于python+flask+随机分配考试题目,基于开发语言python,数据库mysql
开发语言·后端·python·mysql·flask·html5
dalalajjl4 小时前
爱派(AiPy):一个让大语言模型直接操作Python完成任务
python
景彡先生4 小时前
Python matplotlib详解:从入门到精通,数据可视化利器
python·信息可视化·matplotlib