如何从另一个模块执行模块的代码?

时间:2013-08-06 04:36:23

标签: python

我知道这是一个新手问题。但。我有一个非常简单的模块,包含一个类,我想调用模块从另一个模块运行。像这样:

#module a, to be imported

import statements

if __name__ == '__main__':

    class a1:
        def __init__(self, stuff):
            do stuff

        def run_proc():
            do stuff involving 'a1' when called from another module

#Module that I'll run, that imports and uses 'a':
if __name__ == '__main__':

    import a

    a.run_proc()

然而,由于其他人可能很明显的原因,我得到错误属性错误:'模块'对象没有属性'run_proc'我是否需要这个类的静态方法,或者我的run_proc()方法一个类,我初始化一个实例?

1 个答案:

答案 0 :(得分:4)

移动

if __name__ == '__main__':

在模块a到文件末尾并添加pass或一些测试代码。

你的问题是:

  1. if __name__ == '__main__':范围内的任何内容仅在顶级文件中考虑。
  2. 您正在定义一个类,但没有创建一个类实例。
  3. 要导入的模块a

    import statements
    
    class a1:
        def __init__(self, stuff):
            do stuff
    
        def run_proc():
            #do stuff involving 'a1' when called from another module
    
    
    if __name__ == '__main__':
        pass # Replace with test code!
    

    我将运行的模块,导入并使用'a':

    import a
    def do_a():
        A = a.a1()   # Create an instance
        A.run_proc() # Use it
    
    if __name__ == '__main__':
       do_a()