无法访问方法中的工作表?

时间:2017-09-15 13:27:04

标签: python django python-3.x

未解决的参考'工作表'错误发生。 我试过的代码如下:

class User():
    def __init__(self, sheet_path):
        self.file = glob.glob(sheet_path)
        self.construction_area ={}

    def read(self):
        for x in self.file:
            if "$" not in x:
                book = xlrd.open_workbook(x)
                sheet = book.sheet_by_index(0)
                cells = [('user_id', 0, 9),
                             ('name', 4, 0),
                             ('age', 4, 1),]
          ・
          ・
   def save(self):
          ・
          ・
            for row_index in range(7, sheet.nrows):
                row = sheet.row_values(row_index)
          ・
          ・
x = User('./data/*.xlsx')
x.read()
x.save()

sheet保存方法中,错误发生。我在工作表前面添加了self,但是AttributeError:'User'对象没有出现属性'sheet'错误。 为什么我不能访问'表'?实例还不够吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在python中,要访问实例成员,必须使用实例内部的经典self关键字来指定实例。

您的sheet变量在read方法中创建本地,但仅在本地,它永远不会附加到User的当前实例。 如果你需要保存这些表格(看起来这就是你想要的那样;)),你必须在任何地方使用self.sheet(而且,在__init__方法中声明它)

class User():
    def __init__(self, sheet_path):
        self.file = glob.glob(sheet_path)
        self.construction_area ={}
        self.sheet = None

    def read(self):
        for x in self.file:
            if "$" not in x:
                book = xlrd.open_workbook(x)
                self.sheet = book.sheet_by_index(0)
                cells = [('user_id', 0, 9),
                         ('name', 4, 0),
                         ('age', 4, 1),]

    def save(self):
        for row_index in range(7, sheet.nrows):
            row = self.sheet.row_values(row_index)