为什么在类定义中允许使用语句?

时间:2017-09-10 17:25:28

标签: python python-3.x

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语句或类变量定义实例或类方法之外,大部分时间做其他事情都没有意义。

为什么在类的主体中允许这样的语句和函数调用?

1 个答案:

答案 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)

那么为什么不允许他们呢?