python类中的范围令人惊讶的行为

Mik*_*lla 2 python oop

以下代码将导致执行print语句

class C1(object):

    print 'I am some code executing in C1'

    def method1(self):
        print 'I am method1'
    def method2(self):
        print 'I am method2'
        pass
Run Code Online (Sandbox Code Playgroud)

我对此感到惊讶,因为我认为只有在实例化课程时才能执行,有人能解释这背后的想法吗?

var*_*tec 8

我想你的意思是它打印'我是一些在C1中执行的代码'?

它是在创建类对象时打印的,在这种情况下,当您加载它声明的文件时会发生这种情况.这也是放置类变量的地方(可以在其他语言中用作Python等效的静态变量).

如果您想拥有在创建实例时执行的代码,请将其放入__init__().

有关该主题的官方Python文档:http://docs.python.org/tutorial/classes.html#class-objects