Python 从不同文件中的两个类导入时出现问题

Python 从不同文件中的两个类导入时出现问题,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,从驻留在两个不同文件中的两个不同类导入实例时遇到问题。这两个文件看起来像: 文件名:doublemap.py import stops class DoubleMap(object): def __init__(self): self.url = "https://someurl" mapInstance = DoubleMap() from doublemap import DoubleMap import urllib.request as urllib2 import

从驻留在两个不同文件中的两个不同类导入实例时遇到问题。这两个文件看起来像:

文件名:doublemap.py

import stops
class DoubleMap(object):
   def __init__(self):
      self.url = "https://someurl"

mapInstance = DoubleMap()
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())
文件名:stops.py

import stops
class DoubleMap(object):
   def __init__(self):
      self.url = "https://someurl"

mapInstance = DoubleMap()
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函数从stops.py返回的值使用到doublemap.py并存储在某个变量中

  • 当我运行doublemap.py时,它会显示在stops.py中打印的值,但如果我运行stops.py,则会出现以下错误:

  • 回溯(最近一次呼叫最后一次):

    文件“Doublemap/Doublemap/stops.py”,第1行,在
    从doublemap导入doublemap
    文件“Doublemap/Doublemap/Doublemap.py”,第1行,在
    进口站
    文件“Doublemap/Doublemap/stops.py”,第1行,在
    从doublemap导入doublemap
    ImportError:无法导入名称“DoubleMap”
    

    有什么建议吗

    创建一个文件名为
    \uuuu init\uuuu.py
    ,该文件名与两个脚本位于同一目录下

    您的项目目录结构应该如下所示:

    pro/
       __init__.py
       doublemap.py
       stops.py
    
    顺便说一下,您可以在标题处进行相关导入

    init.py的主要用途是初始化Python包。这个 证明这一点的最简单方法是查看 标准Python模块

    您在
    doublemap.py
    中的代码:

    import stops
    
    如果不需要,您应该在
    doublemap.py
    的开头导入
    停止


    在Stops.py中

    from doublemap import DoubleMap
    
    k = DoubleMap()
    print(k.Method())
    
    在doublemap.py中使用方法返回变量

    class DoubleMap(object):
       def __init__(self):
          self.url = "https://someurl"
    
       def Method(self):
          return self.url
    

    进口周期是邪恶的。不要

    此外,此处不需要它:
    doublemap.py
    没有理由导入
    stops.py

    import stops
    
    文件名: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())
    

    但是我想把脚本保存在两个不同的文件中。@AdityaKushwah我已经检查了你的代码,你有了
    python相对导入