Python类命名空间

类命名空间

Python 中,编写的整个程序默认处于全局命名空间内,而类体则处于类命名空间内。所有位于 class 语句中的代码,其实都位于特殊的命名空间中,通常称之为类命名空间。

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

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

global_fn('fkit')   # ①调用全局范围内的global_fn,为参数p传入参数值

c = Category()  # ②调用类命名空间内的cate_fn,Python自动绑定第一个参数
c.cate_fn()

### 运行结果:
执行lambda表达式,p参数:  fkit
执行lambda表达式,p参数:  <__main__.Category object at 0x10e4e1c88>
  • 上面程序分别在全局空间、类命名空间内定义了两个 lambda 表达式,在全局空间内定义的 lambda 表达式就相当于一个普通函数,因此程序使用调用函数的方式来调用该 lambda 表达式,并显式地为第一个参数绑定参数值,如上面程序中 ① 号代码所示。

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

posted @ 2022-05-03 15:56  大切切  阅读(69)  评论(0编辑  收藏  举报