前面章节中,已经不只一次提到,所有位于 class 语句中的代码,其实都位于特殊的命名空间中,通常称之为类命名空间。Python 中,编写的整个程序默认处于全局命名空间内,而类体则处于类命名空间内。
Python 允许在全局范围内放置可执行代码,当 Python 执行该程序时,这些代码就会获得执行的机会。类似地,Python 同样允许在类范围内放置可执行代码,当 Python 执行该类定义肘,这些代码同样会获得执行的机会。
例如,如下程序测试了类命名空间:
class Item:
# 直接在类空间中放置执行性质代码
print('正在定义Item类')
for i in range(10):
if i % 2 == 0 :
print('偶数:', i)
else:
print('奇数:', i)
运行结果为:
正在定义Item类
偶数: 0
奇数: 1
偶数: 2
奇数: 3
偶数: 4
奇数: 5
偶数: 6
奇数: 7
偶数: 8
奇数: 9
正如从上面代码所看到的,程序直接在 Item 类体中放置普通的输出语句、循环语句、分支语句,这都是合法的。当程序执行 Item 类时,Item 类命名空间中的这些代码都会被执行。
从执行效果来看,这些可执行代码被放在 Python 类命名空间与全局空间并没有太大的区别。确实如此,这是因为程序并没有定义“成员”(变量或函数),这些代码执行之后就完了