我无法从位于两个不同文件中的两个不同类中导入实例。这两个文件如下所示:
文件名:doublemap.py
import stops
class DoubleMap(object):
def __init__(self):
self.url = "https://someurl"
mapInstance = DoubleMap()
文件名:Stops.py
from doublemap import DoubleMap
import urllib.request as urllib2
import json
class Bus_stops(DoubleMap):
def __init__(self):
self.stops_maps = {}
self.stops_URL = DoubleMap().url+"stops"
def fetch_details(self):
json_obj = urllib2.urlopen(self.stops_URL)
data = json.load(json_obj)
for stops_details in data:
self.stops_maps[stops_details['id']] = {
stops_details['name'],
stops_details['description'],
stops_details['lat'],
stops_details['lon'],
stops_details['buddy'],
# stops_details['fields']
}
return self.stops_maps
temp = Bus_stops()
print(temp.fetch_details())
疑问:
如何使用fetchdetails函数将stop.py返回的值存储到doublemap.py中并存储在某些变量中?
当我运行doublemap.py时,它显示了印在Stops.py中的值,但是如果我运行了stops.py,则会出现以下错误:
回溯(最近通话最近一次):
File "Doublemap/DoubleMap/stops.py", line 1, in <module> from doublemap import DoubleMap File "Doublemap/DoubleMap/doublemap.py", line 1, in <module> import stops File "Doublemap/DoubleMap/stops.py", line 1, in <module> from doublemap import DoubleMap ImportError: cannot import name 'DoubleMap'
有什么建议吗?
答案 0 :(得分:0)
使用两个脚本的相同目录创建文件名dependency constraints
。
,您的项目目录结构应类似于:
gradle.properties
顺便说一句,您可以在标题中进行相关的导入。
init .py的主要用途是初始化Python软件包。的 证明这一点的最简单方法是看一下 一个标准的Python模块。
您在__init__.py
中的代码:
pro/
__init__.py
doublemap.py
stops.py
如果不需要,请在doublemap.py
的开头导入import stops
。
答案 1 :(得分:0)
在Stops.py 中这样称呼
entrypoint.sh
doublemap.py 中的使用方法返回变量
from doublemap import DoubleMap
k = DoubleMap()
print(k.Method())
答案 2 :(得分:0)
进口周期是邪恶的。不要。
此外,您在这里不需要它:doublemap.py
没有理由导入stops.py
:
文件名:doublemap.py
# import stops # NO IMPORT CYCLE!
class DoubleMap(object):
def __init__(self):
self.url = "https://someurl"
mapInstance = DoubleMap()
文件名:Stops.py
from doublemap import DoubleMap
import urllib.request as urllib2
import json
class Bus_stops(DoubleMap):
def __init__(self):
self.stops_maps = {}
self.stops_URL = DoubleMap().url+"stops"
def fetch_details(self):
json_obj = urllib2.urlopen(self.stops_URL)
data = json.load(json_obj)
for stops_details in data:
self.stops_maps[stops_details['id']] = {
stops_details['name'],
stops_details['description'],
stops_details['lat'],
stops_details['lon'],
stops_details['buddy'],
# stops_details['fields']
}
return self.stops_maps
temp = Bus_stops()
print(temp.fetch_details())