专栏首页python3python的点号运算和LEGB规则的学

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

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 内置作用域

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python 操作mysql 数据库 安

    python 需要连接Mysql 数据库 、使用pip 安装 mysql-python ,安装一直报错。找不到包依赖之类的、于是下载 直接 下载 mysql-p...

    py3study
  • 使用ansible搭建python多版

    在学习python过程中,centos系统自带的python版本比较滞后。在测试过程中,往往需要多个版本,但又不想影响系统自带的版本;尤其是在学习django过...

    py3study
  • wing 切换python版本

    python exxcutable设置python路径,可以更改python版本和(32/64位切换)

    py3study
  • 如何系统学习python

    Java中文社群_老王
  • 如何系统学习python

    前言 最早接触python的时候,他并没有现在这么火,我也没把他太当回事,那时候我对python的印象就是给运维人员使用的一门很古老的语言,显然随着tensor...

    Java中文社群_老王
  • 如何系统学习python

    最早接触python的时候,他并没有现在这么火,我也没把他太当回事,那时候我对python的印象就是给运维人员使用的一门很古老的语言,显然随着tensorflo...

    Java中文社群_老王
  • python 操作mysql 数据库 安

    python 需要连接Mysql 数据库 、使用pip 安装 mysql-python ,安装一直报错。找不到包依赖之类的、于是下载 直接 下载 mysql-p...

    py3study
  • 利用Python画随机水墨图

    上次再老婆大人的创意下,做了一个觉得比较好玩的图片出来.没错,就是用python来作图!

    猫咪编程
  • Linux环境下非root用户安装Python及相关库

    在生产环境的Linux服务器上,都会自带python,但有时因为python或相关库版本太低,导致自己写的python脚本无法运行,无奈没有root权限(即使有...

    JouyPub
  • wing 切换python版本

    python exxcutable设置python路径,可以更改python版本和(32/64位切换)

    py3study

扫码关注云+社区

领取腾讯云代金券