我对以下声明很感兴趣:
当正常保留类定义(通过结尾)时,会创建一个类对象。 (来自Python tutorial)
在课程定义的其他方面可以留下"?我能想到SyntaxError
。还有其他方法吗?
答案 0 :(得分:2)
这是另一种方式:
>>> class A:
... x = y
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in A
NameError: name 'y' is not defined
答案 1 :(得分:0)
我相信短语&#34;当一个类定义正常(通过结尾)&#34;指的是Python在编译的第一阶段如何构建对象类定义。
假设您声明了一个类:
# <--- `Foo` is NOT defined as a class object in this context
class Foo:
def say_hello(self):
# Whatever
pass
# <--- Interpreter leaves class declaration here
# <--- `Foo` is now defined as a class object in this context
type(Foo) # Returns `<type 'classobj'>`
在您实际执行程序之前,Python编译器会通过您的代码来构建将用作程序运行的对象和类定义的索引(通常称为&#34;符号表&#34 )。当它达到class Foo
时,它开始将以下行解释为Foo
的类定义,直到到达最后一个缩进行,并且编译器点Foo
现在是我们索引中的已定义符号并且Python继续运行你的程序的其余部分。