Python 如何从它们不在的地方调用对象实例方法';t定义
我有一个顶层脚本,它创建对象的实例并执行实例的方法。我很困惑如何从alarm_handler文件中执行fetcher的方法。具体来说,行“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
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装饰符。