返回介绍

Python 命名空间

发布于 2024-05-19 19:37:09 字数 3091 浏览 0 评论 0 收藏 0

1.有点号和无点号的变量名,会使用不同的方式处理

  • 无点号运算符的变量名,使用LEGB作用域规则查找名字
  • 有点好运算符的变量名,使用的是对象的命名空间查找名字
  • 模块的作用域以及类的作用域会对对象的命名空间进行初始化

2.模块、类、实例对象的命名空间实际上是以字典的形式实现的,并由内置属性.__dict__表示

  • 属性点号运算其实内部就是字典的索引运算
  • 属性继承其实就是搜索链接的字典

    每个实例都有各自独立的命名空间字典。初始时为空字典。 随着对self或者对象的属性赋值,命名空间字典不断扩张

3.读取属性可以通过点运算符或者直接通过键索引:

  obj.attr #通过点运算符
  obj.__dict__['attr']#通过键索引

通过键索引时必须给出属性名字符串;通过点运算符时给出的是属性名(不是字符串)

4.dir函数可以输出对象的所有可访问属性,包括它继承的名字(以及其他一些内置的系统属性)
dir展示所有可访问属性

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文