属性错误: 'module'对象没有属性'lat'



apispy_m.py

def aspy_geolocate(api_spy_akey, api_spy_ytvid):
    function_name = "geolocate"
    function_description = """Get location of a youtube video!"""
    if api_spy_akey == "":
        errcode = 001
        aspy_errhandler(function_name, errcode)
    else:
        pass
    r = requests.get('https://www.googleapis.com/youtube/v3/videos?part=recordingDetails&id=%s&key=%s'%(api_spy_ytvid, api_spy_akey))
    api_spy_jsondata = json.loads(r.text)
    try:
        lat = api_spy_jsondata['items'][0]['recordingDetails']['location']['latitude']
        lon = api_spy_jsondata['items'][0]['recordingDetails']['location']['longitude']
        alt = api_spy_jsondata['items'][0]['recordingDetails']['location']['altitude']
    except KeyError:
        lat = "N/A"
        lon = "N/A"
        alt = "M/A"

moduletest.py

import apispy_m
api_spy_akey = "*Super secret api key ;)*"
api_spy_ytvid = "*youtube vid id*"
aspy = apispy_m
aspy.aspy_geolocate(api_spy_akey, api_spy_ytvid)
print aspy.lat
print aspy.lon
print aspy.alt

运行testmodule.py后的错误(使用python2(:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    print aspy.lat
AttributeError: 'module' object has no attribute 'lat'

我似乎无法解决此错误。我已经尝试了from apispy_m import *from apispy_m import aspy_geolocate。这是我第一次创建Python模块。

帮助您将不胜感激!

您在功能中具有本地变量,而不是模块属性(Globals(。在功能之外的任何人都看不到本地变量(在功能退出时抓住存在(。

您想返回这些值:

try:
    lat = api_spy_jsondata['items'][0]['recordingDetails']['location']['latitude']
    lon = api_spy_jsondata['items'][0]['recordingDetails']['location']['longitude']
    alt = api_spy_jsondata['items'][0]['recordingDetails']['location']['altitude']
    return (lat, lon, alt)
except KeyError:
    return ("N/A", "N/A", "N/A")

(假设您要返回"N/A",如果缺少3个组件的任何(。

然后将这3个值分配给调用函数的代码中的三个新变量:

lat, lon, alt = aspy.aspy_geolocate(api_spy_akey, api_spy_ytvid)
print lat
print lon
print alt

相关内容

最新更新