AttributeError:" object has no attribute"报错,请教如何解决?

以下语句中,QBDownloaderDayPrice 继承自 QBDownloader,执行时报错AttributeError: 'QBDownloaderDayPrice' object has no attribute '_QBDownloader__flag_encoding'。请教如何解决?

import time
import datetime
import tushare as ts
import pandas as pd

class QBDownloader(object):

def __init__(self):
    self.__filename = ''
    self.__df_data = null
    self.__flag_encoding = 1

def saveto_csv(self):
    if self.__flag_encoding == 1:
        self.__df_data.to_csv(self.__filename, encoding='GBK')
    else:
        self.__df_data.to_csv(self.__filename)

class QBDownloaderDayPrice(QBDownloader):

def __init__(self):
    self.__filename = 'QBdata\\DayPrice\\dp' + time.strftime("%Y%m%d", time.localtime()) + '.csv'
    self.__df_data = self.get_df_data()
    self.__flag_encoding = 1

def get_df_data(self):
    #获取当天所有股票日价格,返回dataframe
    df_day_price = ts.get_today_all()
    return df_day_price

if name == '__main__':

obj_dl = QBDownloaderDayPrice()
obj_dl.saveto_csv()
print u'存储成功'
阅读 10.8k
1 个回答

仔细查看error message就可以发现问题的。

所有attributes的名字,如果前面是两个下划线开头的_,python解释器会它实际的名字变成_<Class Name>__<Attributes Name>。

QBDownloader类中,__flag_encoding变成了_QBDownloader__flag_encoding.

QBDownloaderDayPrice类中,__flag_encoding变成了_QBDownloaderDayPrice__flag_encodingsaveto_csv()函数本身访问的_QBDownloader__flag_encoding_QBDownloaderDayPrice__flag_encoding替换。所以就找不到_QBDownloader__flag_encoding

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题