无法从另一个Python文件调用函数

时间:2019-11-22 21:53:17

标签: python

我有Workflow.py文件,其中包含以下功能:

class Workflow:
    def Validation(self):
        return print ("Validation Process Started..")

我还有另一个文件Cron.py

import schedule
import time
from Workflow import Validation

class Cron:

    def my_job(self):
        print('Foo')
        Workflow.Validation()

    def Start(self):
        schedule.every(2).to(4).seconds.do(self.my_job)
        while 1:
            schedule.run_pending()
            time.sleep(1)

A = Cron()
A.Start()

我正在尝试从Validation()文件调用Workflow.py中存在的Cron.py函数。这两个文件都位于同一文件夹中。但是,代码给出了以下异常:

Traceback (most recent call last):
 File "cron.py", line 3, in <module>
 from Workflow import Validation
 ImportError: cannot import name 'Validation'

请帮助任何人解决此错误。

2 个答案:

答案 0 :(得分:1)

您在Workflow文件中有一个Workflow类,这就是您感到困惑的原因。没有Validation可以导入,因为Validation在类的内部(而不是文件)

正确的方法是:

from Workflow import Workflow

然后您可以这样称呼它:

Workflow.Validation()

但是,请注意,此函数不是立即定义的类方法或静态方法。如果您要这样调用它,它应该看起来像这样:

class Workflow:
    @staticmethod
    def Validation():
        return print ("Validation Process Started..")

通常,如果您的方法内部未使用selfcls,则应为静态方法

答案 1 :(得分:0)

这应该有效

import Workflow
flow = Workflow.Workflow()
flow.Validate()

ps。您应该阅读静态方法,或者避免不必要地使用类