2014-09-06 63 views
0

一些概念上的疑惑。在此代码:Python范围的疑惑

​​

输出如下:

here in A 
flying 1 
flying 2 
here in main 
another flying 
flying/here in B 

问题:

1 .-为什么有当没有A实例"here in A"获取打印? (没有警告/错误通知)

2.-什么是"flying"东西的范围?他们都打印。我不明白Python的解析规则。

3.-与1.-相同为什么当没有B的实例时,“B中的这里”被打印出来?

4.-有没有像默认的类构造函数?

很抱歉的混乱,但一个“类似的代码”决不会编译,例如,C++

回答

3

1:打印语句运行时定义的类时,以同样的方式静态类变量将没有被分配一个实例是必要的。如果您希望它们仅在创建实例时运行,则将该语句与__init__方法一起使用,否则在类定义中定义一个实例可以调用的另一个函数。

2:Python实际上并不需要像java和其他语言的main()函数,因此整个文件都会运行以便打印飞行的东西。唯一不运行的部分在函数定义内,如“内置B”。

3:请1.

4:我不知道你的意思究竟是什么,但你可能指的是object()构造:

在Python o = object()相当于

Object o = new Object();在Java的。