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

标签 python oop

下面的代码会导致打印语句被执行

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

我对此感到惊讶,因为我原以为它只会在类被实例化时执行,谁能解释这背后的想法?

最佳答案

我猜你的意思是它打印'I am some code executing in C1'?

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

如果您希望在创建实例时执行代码,请将其放入__init__()

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

关于python - python 类中的范围令人惊讶的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5648070/

相关文章:

python - Mock() 函数在 django2 中给出 TypeError

python json 加载和 unicode

python - 从 raw_input 变量的列表中删除数据

python - 如何获得最后n行的标准差?

c - GObject OOP 语法

python - 了解应该绑定(bind)到对象实例的类范围变量

c# - C# 中的通用不可变类

java - Scanner 为什么要实现 Iterator<String>?

java - 对多态性的使用有疑问,也对多态性如何与类型转换相关?

c# - C#中接口(interface)的概念