浅谈Python类命名空间
发布时间:2025-10-21 21:24:20

Python类就像命名空间。Python程序默认在全球命名空间,类别在类命名空间,Python 可执行代码允许放置在全局范围内 Python 在执行程序时,这些代码将有机会执行。类似地,Python还允许在类别范围内放置可执行代码 Python 执行此类定义肘,这些代码也有机会执行。
例如,以下程序测试了类命名空间:
classItem:
#执行代码直接放置在类空间中
print('Item类'正在定义;)
foriinrange(10):
ifi%2==0:
print('偶数:',i)
else:
print('奇数:',i)正如上述代码所看到的,程序直接在那里 Item 将普通输出语句、循环语句和分支语句放置在类别中是合法的。当程序执行时 Item 类时,Item 这些代码将在类命名空间中执行。
从执行效果的角度来看,这些可执行代码被放置在 Python 类命名空间与整体空间没有太大区别。事实上,这是因为程序没有定义“成员”(变量或函数),这些代码在执行后完成,不会留下任何东西。
但是下面的代码是不同的。下面的代码在整体空间和类命名空间中进行了示范 lambda 表达式:
global_fn=lambdap:print('执行lambda表达式,p参数:',p)
classCategory:
cate_fn=lambdap: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 参数)绑定参数值,如上述程序 ② 号码代码显示。
