一些概念上的怀疑。在这段代码中:
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 ++
答案 0 :(得分:3)
1:在定义类时运行print语句,与分配静态类变量的方式相同,不需要实例。如果您希望它们仅在创建实例时运行,则使用__init__
方法放置语句,否则在类定义中定义实例可以调用的另一个函数。
2:Python实际上并不需要像java和其他语言这样的main()函数,整个文件都会运行以便打印出飞行物。唯一没有运行的部分是在函数定义中,例如“内置B”。
3:见1.
4:我不确定你的意思,但你可能指的是object()
构造函数:
o = object()
等同于
Object o = new Object();
。