2015-04-01 97 views
0

我是新來的python,我試圖創建一個非常簡單的API調用到REST服務。我需要這些數據才能將其導入到僅支持python的另一個應用程序中。我的問題是我創建了一個python類,並試圖將其導入到我的應用程序中。我有幾個錯誤,然後修改我的類文件,包括添加一個名爲parse_json的新函數。當我現在運行我的應用程序時,它說對象沒有屬性parse_json。當我直接在類中運行代碼時,它運行的是從單獨的文件運行並導入該類給我上面的錯誤。運行未找到Python類導入屬性

當>我的測試文件

# Import required libraries 
from meetupapi import MeetupAPI 

Meetup = MeetupAPI(
    '/2/members', 
    'xxxxxxx', 
    'xxxxxxx' 
) 
mids = Meetup.get_mid('member') 
group = Meetup.get_gid() 
gid = Meetup.parse_json(group, 'id') 

for mid in mids: 
    member = Meetup.profile(mid, gid) 
    profile = Meetup.parse_json(member) 
    print profile 

錯誤 -

../bin/lib/meetupapi.py - >我的類文件

class MeetupAPI(object): 

    BASE_URL = 'https://api.meetup.com' 

    def __init__(self, request_uri, api_key, group_urlname): 
     self.request_uri = request_uri 
     self.api_key = api_key 
     self.group_urlname = group_urlname 


    # Parse JSON query from API Call 
    def parse_json(self, url, result_type=0): 
     self.url = url 
     self.result_type = result_type 

     self.json_obj = urllib2.urlopen(self.url) 
     self.data = json.load(self.json_obj) 
     if result_type is not 0: 
      if self.data[result_type]: 
       return json.dumps(self.data[result_type]) 
     else: 
      return json.dumps(self.data) 


    # Get member IDs for profile 
    def get_mid(self, request_type): 
     self.request_type = request_type 

     if self.request_type == 'member': 
      self.url = MeetupAPI.BASE_URL + '/2/members?key=' + \ 
       self.api_key + '&group_urlname=' + self.group_urlname 
     elif self.request_type == 'event': 
      url = MeetupAPI.BASE_URL + '/2/events?key=' + \ 
       self.api_key + '&group_urlname=' + self.group_urlname 

     self.json_obj = urllib2.urlopen(self.url) 
     self.data = json.load(self.json_obj) 
     self.mids = [] 

     for self.item in self.data['results']: 
      if self.item['id']: 
       self.mids.extend([self.item['id']]) 

     return self.mids 

    # Get Group IDs for reference 
    def get_gid(self): 
     self.url = MeetupAPI.BASE_URL + '/' + \ 
      self.group_urlname + '?key=' + self.api_key 

     return self.url 

    # Main Meetup API Query for group based information 
    def query(self): 
     self.url = MeetupAPI.BASE_URL + self.request_uri + '?key=' + \ 
      self.api_key + '&group_urlname=' + self.group_urlname 

     return self.url 

    # Get member or event profile information 
    def profile(self,mid,gid): 
     self.mid = mid 
     self.gid = gid 

     self.url = MeetupAPI.BASE_URL + '/2/profile/' + \ 
      str(self.gid) + '/' + \ 
      str(self.mid) + '?key=' + self.api_key 

     return self.url 

../bin/test.py

Traceback (most recent call last): 
    File "./test2.py", line 25, in <module> 
    gid = Meetup.parse_json(group, 'id') 
AttributeError: 'MeetupAPI' object has no attribute 'parse_json' 

請記住,我從來沒有在Python中寫過類,所以我可能會錯過一些非常簡單的東西。我查看了所有爲我能找到的其他人提供的答案,但似乎沒有任何結果。任何幫助你可以提供將不勝感激。

回答

0

檢查lib目錄中的meetupapi.pyc(注意「c」)並將其刪除。然後再次嘗試導入模塊。導入時將模塊編譯爲字節碼。如果您修改文件,則應自動完成新編譯,但可能不會。

+0

我沒有看到meetupapi.pyc文件。我完全在做導入錯誤? – 2015-04-01 18:37:26

+0

現在我看看它,你的模塊位於bin/lib目錄中。我不希望你能夠按照你的方式導入它。碰巧你的bin目錄中還有一個meetupapi.py文件嗎? – paidhima 2015-04-01 18:46:30

+0

不...再次,我是新來的,所以我讀了另一篇文章,說在bin目錄中創建一個__init__.py文件,其中包含: from lib.meetupapi import MeetupAPI – 2015-04-01 18:49:36