Python——类命名空间

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

class Item:
    print("正在定义Item类")
    for i in range(10):
        for i%2==0:
            print("偶数",i)
        else:
            print("奇数",i)

这些类内代码和在全局空间执行并没有太大区别,因为程序中没有定义“成员”(变量或者函数),这些代码执行结束,不会留下什么
下面代码示范了在全局空间和类命名空间内分别定义的Lambda表达式

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


class Category:
    cate_fn = lambda p: print("执行类内——lambda表达式,参数p:", p)


global_fn("filet")
c = Category()
c.cate_fn()

执行结果为:

执行1_lambda表达式,参数p: filet
执行类内——lambda表达式,参数p: <__main__.Category object at 0x0000022E906D1C18>

在全局空间内定义的lambda表达式,相当于一个普通函数,因此程序用调用函数的方式来调用该lambda表达式,并显式的为第一个参数绑定参数值,
而对于在类命名空间内定义的lambda表达式,则相当于在该类命名空间调用该表达式,python会为该方法的第一个参数(相当于self)自动绑定参数值,其实是其内存地址。

你可能感兴趣的:(Python——类命名空间)