name_player = None
health_player = None
inventory_player = []
class engine:
print name_player
我不知道为什么在没有使用engine()
调用它的情况下运行答案 0 :(得分:3)
Python解释器首先读取你的文件,一次一行。
第1步:
name_player = None
将name_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()
,你会得到一个空对象。