Мое приложение-колба сообщает мне, что метод класса, который я создал, не определен.Он говорит:
AttributeError: у объекта 'GetIndexItemInfo' нет атрибута 'genDFs'
Вот код:
__ init __. Py
@app.route('/assistant', methods=['GET', 'POST'])
@login_required
def use_assistant():
from flask import request
if request.method == 'GET':
...FORM GOES HERE
else:
report = request.form.get('report')
from modules.majestic import config
rprt = config[report]
inst=rprt(request.form)
url = inst.genUrl()
dic = inst.getData(url)
df = inst.genDFs(dic)
...
majestic.py
import urllib.request, urllib.parse, urllib.error
import ast
import pandas as pd
import ssl
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
class Majestic:
key='APIKEYHERE'
base='https://api.majestic.com/api/json?app_api_key={}'.format(key)
@staticmethod
def getData(url):
req = urllib.request.Request(url=url)
f = urllib.request.urlopen(req, context=ctx)
x = f.read().decode('utf-8')
dic = ast.literal_eval(x)
return dic
class Report(Majestic):
def __init__(self,data):
items=[]
for key,val in data.items():
if 'address' in key:
items.append(val)
self.items = items
self.len = len(items)
self.cmd = data['cmd']
self.base_url = super().base
def genUrl(self):
substr=self.base_url+'&cmd='+self.cmd+'&items='+str(len(self.items))+'&'
for i,item in enumerate(self.items):
substr=substr+'item'+str(i)+'='+item+'&'
return substr[:-1]
class GetIndexItemInfo(Report):
@staticmethod
def genDfs(data):
for i in range(len(data['DataTables']['Results']['Data'])):
new_data=data['DataTables']['Results']['Data'][i]
cols = ['Url','AC Rank','Citation Flow','Trust Flow','Ext. Back Links','Ref Domains','Ref Follow Domains']
maj_cols = ['Item','ACRank','CitationFlow','TrustFlow','ExtBackLinks','RefDomains','RefDomainTypeFollow']
dic = dict(zip(cols,[new_data[i] for i in maj_cols]))
cols = ['Url','AC Rank','Citation Flow','Trust Flow','Ext. Back Links','Ref Domains','Ref Follow Domains']
if i == 0:
main_df = pd.DataFrame(dic,index=[0])[cols]
else:
df = pd.DataFrame(dic,index=[0])[cols]
main_df = main_df.append(df, ignore_index=True)
return main_df
Я протестировал majestic.py отдельно, а экземпляр класса GetIndexItemInfo, который я создаю, работает должным образом и не возвращает ошибку.
Есть идеи, почему я могу получить эту ошибку, когда запускаю ее в колбе?
Заранее большое спасибо