为什么我的课程在不调用的情况下自动运行?

时间:2016-02-19 02:46:04

标签: python

name_player = None
health_player = None
inventory_player = []


class engine:

    print name_player

我不知道为什么在没有使用engine()

调用它的情况下运行

2 个答案:

答案 0 :(得分:3)

Python解释器首先读取你的文件,一次一行。

第1步: name_player = Nonename_player : None添加到locals()

步骤2和3以相同的方式进行。

步骤4:class engine: Python看到一个类并准备将定义加载到内存中。因此,它可能会阅读该类并将所有字段和方法定义放入某些运行时字典中。为此,它需要执行类中的语句。

通常一个类可能看起来像

class Foo():
  def my_method():
    return "I'm foo!"

这将定义一个方法,并将该定义与类定义放在堆上。

所以你的定义如下。我们已经开始创建类对象,然后我们遇到一个语句,所以解释器执行它。在你的情况下,它是一个打印语句,所以你看到它被执行了。

如果你打电话给engine(),你现在就会看到,另一张照片不会发生。

你可能想要的是在如下的构造函数中使用这个语句:

class engine:
    def __init__(self); #__init__() is a constructor in Python
        print name_player

有关Python中的类的更多信息,请参阅https://docs.python.org/2/tutorial/classes.html

答案 1 :(得分:1)

当你定义一个类时,python会计算构成类定义的语句。如果这些语句有副作用,例如将文本发送到标准输出,那么该文本将被发送。

如果你要实例化它,通过调用engine(),你会得到一个空对象。

相关问题