0

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

#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()

但是,由于对其他人来说可能很明显的原因,我收到错误 Attribute Error: 'Module' object has no attribute 'run_proc' 我需要这个类的静态方法,还是在一个类中有我的 run_proc() 方法,我初始化一个实例?

4

1 回答 1

4

移动

if __name__ == '__main__':

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

你的问题是:

  1. 范围内的任何事情if __name__ == '__main__':都只在顶级文件中考虑。
  2. 您正在定义一个类,但没有创建一个类实例。

模块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()
于 2013-08-06T04:55:01.597 回答