我已经玩了一段时间我的代码,这个不是关于一个bug或任何东西,但我只是不明白为什么类main()运行而不需要初始化它...
class vars():
var1 = "Universe!"
var2 = "Oscar!"
var3 = "Rainbow!"
class main():
print (vars.var1)
def __init__(self):
print (vars.var2)
print (vars.var3)
Run Code Online (Sandbox Code Playgroud)
但是,非常感谢你阅读.
与许多其他语言不同,类体是Python中的可执行语句,并在解释器到达class行时立即执行.当你运行这个"程序"时:
class Foo:
print("hey")
Run Code Online (Sandbox Code Playgroud)
它只是打印"嘿"而没有Foo创建任何对象.
这同样适用于函数定义语句def(但不适用于函数体).当你运行这个:
def foo(arg=print("hi")):
print("not yet")
Run Code Online (Sandbox Code Playgroud)
它打印"hi",但不打印"尚未".
创建类时,Python会在新的命名空间中直接执行类声明中的所有代码.这样,在类中创建的任何变量(最常见的方法,由普通的函数声明创建def foo(self...))都附加到类而不是全局.
但代码仍然立即运行.如果它调用print()或做了一些会产生可见副作用的东西,那么现在就会发生,而不是在实例化类时(调用它来创建一个新实例).如果在实例化类时需要执行某些操作,请编写一个__init__()方法.