繁体   English   中英

父类init在继承期间执行

[英]parent class init is executing during inheritence

OOP中的一个基本问题。

test.py文件内容:

class test(object):
    def __init__(self):
        print 'INIT of test class'
obj=test()

然后我打开另一个文件。

我只是从上面的测试类继承而来:

from test import  test
class test1(test):
    def __init__(self):
        pass

因此,当我运行此类时,父类的初始化正在执行。

我读到我可以避免使用

if __name__='__main__'

我可以克服这个问题,但是我的问题是为什么父类的init正在执行,因为我只在第二个文件中导入该类,所以对象创建代码如何执行?

导入模块将执行所有模块级别的语句,包括obj=test() 为避免这种情况,仅当作为主程序运行时才创建实例,而不要在导入时创建实例:

class test(object):
    def __init__(self):
        print 'INIT of test class'

if __name__ == '__main__':
     obj=test()

问题不是继承,而是导入。 在您的情况下,您在导入时执行obj=test()

from test import test

导入test ,其名称__name__test 但是,当您使用python test.py在命令行上将程序作为主程序运行时,其名称为__main__ 因此,在导入情况下,如果使用,则跳过obj=test()

if __name__ == '__main__':
     obj=test()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM