美文网首页
浅谈Python类命名空间

浅谈Python类命名空间

作者: 帅帅滴小哥哥 | 来源:发表于2019-08-19 17:30 被阅读0次

Python的类就像命名空间。Python程序默认处于全局命名空间内,类体则处于类命名空间内,Python 允许在全局范围内放置可执行代码,当 Python 执行该程序时,这些代码就会获得执行的机会。类似地,Python同样允许在类范围内放置可执行代码,当 Python 执行该类定义肘,这些代码同样会获得执行的机会。

例如,如下程序测试了类命名空间:

class Item:

# 直接在类空间中放置执行性质代码

print('正在定义Item类')

for i in range(10):

if i % 2 == 0 :

print('偶数:', i)

else:

print('奇数:', i)

正如从上面代码所看到的,程序直接在 Item 类体中放置普通的输出语句、循环语句、分支语句,这都是合法的。当程序执行 Item 类时,Item 类命名空间中的这些代码都会被执行。

从执行效果来看,这些可执行代码被放在 Python 类命名空间与全局空间并没有太大的区别。确实如此,这是因为程序并没有定义“成员”(变量或函数),这些代码执行之后就完了,不会留下什么。

但下面代码就有区别。下面代码示范了在全局空间和类命名空间内分别定义 lambda 表达式:

global_fn = lambda p: print('执行lambda表达式,p参数: ', p)

class Category:

cate_fn = lambda p: print('执行lambda表达式,p参数: ', p)

# 调用全局范围内的global_fn,为参数p传入参数值

global_fn('fkit')  # ①

c = Category()

# 调用类命名空间内的cate_fn,Python自动绑定第一个参数

c.cate_fn()  # ②

上面程序分别在全局空间、类命名空间内定义了两个 lambda 表达式,在全局空间内定义的 lambda 表达式就相当于一个普通函数,因此程序使用调用函数的方式来调用该 lambda 表达式,并显式地为第一个参数绑定参数值,如上面程序中 ① 号代码所示。

对于在类命名空间内定义的 lambda 表达式,则相当于在该类命名空间中定义了一个函数,这个函数就变成了实例方法,因此程序必须使用调用方法的方式来调用该 lambda 表达式,Python 同样会为该方法的第二个参数(相当于 self 参数)绑定参数值,如上面程序中 ② 号代码所示。

浅谈Python类命名空间-Python学习网

相关文章

  • 浅谈Python类命名空间

    Python的类就像命名空间。Python程序默认处于全局命名空间内,类体则处于类命名空间内,Python 允许在...

  • 07_Python函数进阶_全栈开发学习笔记

    # 1. 命名空间 ## 1.1 命名空间的种类 命名空间共有有三种 1) 内置命名空间 —— python解释器...

  • 6、Python的组织结构

    python的层级结构:包 -> 模块 -> 类 ->函数、变量 包:文件夹,模块:文件 命名空间:...

  • Python关于类的运用解析

    命名 在命名python类的时候还是使用class关键字来命名。 python类分为两种:经典类(旧类),新式类 ...

  • Python类初识

    命名空间 内置命名空间 : python解释器就是python解释器一启动就可以使用的名字存储在内置命名空间中内置...

  • C 语言的命名空间

    C语言也有命名空间,可分位4类命名空间。 4类命名空间: 所有的标签(label)都属于同一个命名空间。说明:①在...

  • 06_JVM学习笔记_类的命名空间、类的卸载

    类的命名空间 每个类加载器都有自己的命名空间,命名空间由该加载器及所有父加载器所加载的类组成。 在同一个命名空间中...

  • C#基础第九天(面向对象)

    1、命名空间 可以认为类是属于命名空间的。 如果在当前项目中没有这个类的命名空间,需要我们手动导入这个类所在的命名...

  • 新手应该如何学习python

    1、python语言基础 Python3入门,数据类型,字符串 判断/循环语句,函数,命名空间,作用域 类与对象,...

  • Python学习路线

    Python语言基础 Python3入门,数据类型,字符串 判断/循环语句,函数,命名空间,作用域 类与对象,继承...

网友评论

      本文标题:浅谈Python类命名空间

      本文链接:https://www.haomeiwen.com/subject/abeesctx.html