前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python的点号运算和LEGB规则的学

python的点号运算和LEGB规则的学

作者头像
py3study
发布2020-01-10 11:36:56
5940
发布2020-01-10 11:36:56
举报
文章被收录于专栏:python3

python是一门完全支持面向对象风格的语言.那么我就从面向对象的三要素讲起:

1 封装

2 继承

3 多态

python在这三个方面都有着自己的特色.

1 python的封装是约定 ,而不是约束, 因为你已经是成年人了.

2 python的继承 实现本质是点号运算

3 python的多态是基于协议,基于行为的多态

下面我们讲讲python的变量查找规则

1 简单的变量--遵循LEGB查找规则

2 点号运算 x.y 搜索对象中的属性y, 这个具有通用性, 可以用于任何对象.

python的继承基于属性查找?对的,这种规则即统一,又简单,非常有特色.

假如我们有一个基类X ,然后Y继承与X, x是Y的实例,这里就形成了一个非常简单的继承树.也就是我们的搜索树.

X--->Y--->x

由于python中的类也是对象,所以我们的这颗树的成员本质都是一样的--对象.

这颗树上的每一个对象都有自己的命名空间.一般这个命名空间技术上用一个可维护的字典来实现. 在这个继承树上我们查找一个属性x.name.那么就会按照广度遍历的方法,搜索这颗树,找到name属性为止,没找到就抛出异常. 这就是python的继承.

LEGB是针对于简单变量的变量搜索规则.

1 在本地查找

2 嵌套作用域

3 全局作用域

4 内置作用域

这样一层层查找,找到就停止搜索,如果没找到,就未定义的错误.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python是一门完全支持面向对象风格的语言.那么我就从面向对象的三要素讲起:
  • python在这三个方面都有着自己的特色.
  • 下面我们讲讲python的变量查找规则
  • python的继承基于属性查找?对的,这种规则即统一,又简单,非常有特色.
  • LEGB是针对于简单变量的变量搜索规则.
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档