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 参数)绑定参数值,如上面程序中 ② 号代码所示。