Python允许在类的主体中执行for
语句,以及其他常见语句和函数调用。
因此,以下两个类定义代码在Python中是合法的:
函数调用
class X(object):
print('xyz')
输出:
xyz
for
声明
class Y(object):
for item in range(4):
print(item)
输出:
0
1
2
3
但是,除了使用def
语句或类变量定义实例或类方法之外,大部分时间做其他事情都没有意义。
为什么在类的主体中允许这样的语句和函数调用?
答案 0 :(得分:5)
为什么在类的主体中允许这样的语句和函数调用?
类语句的主体是一系列Python语句,就像任何其他块语句的主体一样。类主体的目的是准备类的命名空间,用方法和类变量以及属性和东西填充它。为此,允许函数定义和赋值语句显然很有用,但允许所有其他语句类型的目的不太明确。
然而,禁止其他陈述没有令人信服的理由。它只需要更多的工作,使语言不那么灵活,没有明显的好处。
使用for
循环,您可以执行类似
class Foo:
__slots__ = []
for name in some_list:
__slots__.append(name.lower())
del name
使用函数调用,您可以执行类似
的操作class Foo:
some_variable = something()
validate_and_filter(some_variable)
那么为什么不允许他们呢?