Python范围存在疑问

时间:2014-09-06 09:45:05

标签: python oop

一些概念上的怀疑。在这段代码中:

class A:
   print "here in A"

print "flying 1"

def main():
   print "here in main"

print "flying 2"

if __name__ == "__main__":
    main()
    print "another flying"

class B:
    print "flying/here in B"

    def __init__(self):
       print "built in B"

输出如下:

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

问题:

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

2.- "flying"事物的范围是什么?他们都打印出来了。我不理解Python的解析规则。

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

4.-是否有类似默认类构造函数的东西?

很抱歉混淆但是“类似代码”永远不会编译,例如,C ++

1 个答案:

答案 0 :(得分:3)

1:在定义类时运行print语句,与分配静态类变量的方式相同,不需要实例。如果您希望它们仅在创建实例时运行,则使用__init__方法放置语句,否则在类定义中定义实例可以调用的另一个函数。

2:Python实际上并不需要像java和其他语言这样的main()函数,整个文件都会运行以便打印出飞行物。唯一没有运行的部分是在函数定义中,例如“内置B”。

3:见1.

4:我不确定你的意思,但你可能指的是object()构造函数:

Python中的

o = object()等同于

Java中的

Object o = new Object();