返回介绍

属性名的点号运算

发布于 2024-01-29 22:24:16 字数 663 浏览 0 评论 0 收藏 0

现在,熟悉了模块的基本知识,我们应该深入探讨变量名点号运算(notion of name qualification)的概念。在Python之中,可以使用点号运算语法object.attribute获取任意的object的attribute属性。

点号运算其实就是表达式,传回和对象相配的属性名的值。例如,上一个例子中,表达式module2.sys会取出module2中赋值给sys的值。同样地,如果我们有内置的列表对象L,而L.append会返回和该列表相关联的append方法对象。

那么,属性的点号运算和第17章学过的作用域法则有什么关系呢?其实,二者没有关——这是不相关的概念。当使用点号运算来读取变量名时,就把明确的对象提供给Python,来从其中取出赋值的变量名。LEGB规则只适用于无点号运算的纯变量名。以下是其规则。

简单变量

X是指在当前作用域内搜索变量名X(遵循LEGB规则)。

点号运算

X.Y是指在当前范围内搜索X,然后搜索对象X之中的属性Y(而非在作用域内)。

多层点号运算

X.Y.Z指的是寻找对象X之中的变量名Y,然后再找对象X.Y之中的Z。

通用性

点号运算可用于任何具有属性的对象:模块、类、C扩展类型等。

在第六部分中,我们会看到点号运算对类(这也是继承发生的地方)的意义还要多一点,但是,一般而言,此处所列举的规则适用于Python中所有的变量名。

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

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

发布评论

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