Python 如何从它们不在的地方调用对象实例方法';t定义

Python 如何从它们不在的地方调用对象实例方法';t定义,python,Python,我有一个顶层脚本,它创建对象的实例并执行实例的方法。我很困惑如何从alarm_handler文件中执行fetcher的方法。具体来说,行“status=fetcher.get_status”如下所示。希望这对我的要求是有意义的。如果我能澄清什么,请告诉我 ***file: master*** import fetcher import alarm_handler fetcher = fetcher.Fetcher() alarms = alarm_handler.AlarmHandler() s

我有一个顶层脚本,它创建对象的实例并执行实例的方法。我很困惑如何从alarm_handler文件中执行fetcher的方法。具体来说,行“
status=fetcher.get_status
”如下所示。希望这对我的要求是有意义的。如果我能澄清什么,请告诉我

***file: master***
import fetcher
import alarm_handler
fetcher = fetcher.Fetcher()
alarms = alarm_handler.AlarmHandler()
site_status = alarms.compare_status()

***file: fetcher***
class Fetcher(object):

    def fetch(self)
        fetch a bunch of internet data

    def get_status(self)
        fetch some other internet data

***file: alarm_handler***
from master import fetcher
class AlarmHandler(object):

    def compare_status (self)
        status = fetcher.get_status()
        status_comparison = status comparison stuff
        return status_comparison

您正在创建循环导入。不要

也许您想将
获取程序
实例传递给
AlarmHandler。是否改为比较\u status()
方法

import fetcher
import alarm_handler

fetcher = Fetcher()
alarms = AlarmHandler()
site_status = alarms.compare_status(fetcher)
或者在创建
AlarmHandler()
实例时传入它:

import fetcher
import alarm_handler

fetcher = Fetcher()
alarms = AlarmHandler(fetcher)
site_status = alarms.compare_status()

alarm\u handler
文件中,是否有来自主导入获取程序的
行或类似内容?我编辑了代码以显示我的导入。我好像陷入了某种“循环参考”的麻烦。这是真的吗?@Brianlach:嗯,你有什么错误吗?@Brianlach:你确实在创建循环导入。也许您需要将
fetcher
作为参数传递给
AlarmHandler。相反,请比较\u status()
?只是对术语的一个注释(我并不想听起来太夸张)-我想您的意思是创建类的实例,对吗?除非您正在Python中寻找静态方法,尽管我认为您不是。如果是这种情况,那么在
def
行上方添加@staticmethod装饰符。