首页 > 解决方案 > 在另一个方法中调用不同的方法

问题描述

对 Python 来说有点新,但这是一个关于编写函数而不重复自己的问题。

使用openpyxl我创建了一个文档类和一个工作簿(wb),里面有 3 张纸:

self.sheet1 = self.wb['sheet1']
self.sheet2 = self.wb['sheet2']
self.sheet3 = self.wb['sheet3']

我在这个类中还有一个函数可以sheet3查看特定文本的行。

def find_text_row_number(self, text):
    text_row_number = set([])

    for row in self.sheet3.iter_rows(self.sheet3.min_row,self.sheet3.max_row):
        for cell in row:
            if cell.value == text:
                text_row_number.add(cell.row)

    return sorted(text_row_number)

我的问题是:我怎样才能在程序的其他地方调用这个函数并让它搜索sheet2,而不是sheet3已尝试查看装饰器并使用默认值 ( sheet=self.sheet3),但这会引发错误,因为self尚未定义。

是否有更有效的方法来编写这个特定的函数?或者我缺少的 Python 的某些方面可以在这里提供帮助?

标签: pythonfunctionopenpyxldry

解决方案


尝试:

def find_text_row_number(self, text, sheet_name='sheet1'):
    text_row_number = set([])
    sheet = getattr(self, sheet_name)

    for row in sheet.iter_rows(sheet.min_row, sheet.max_row):
        for cell in row:
            if cell.value == text:
                text_row_number.add(cell.row)

    return sorted(text_row_number)

推荐阅读