python - 在另一个方法中调用不同的方法
问题描述
对 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 的某些方面可以在这里提供帮助?
解决方案
尝试:
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)
推荐阅读
- android - 样式不起作用 Material Design Android Studio
- java - 通过 Liquibase 在文件搜索 master.xml 中构建 Travis CI 的问题
- julia - 使用特殊字符“>”在 Julia 中运行外部程序
- android - 如何更有效地更新 UI
- google-earth-engine - monthlyRainfall.filter(...).first 不是函数
- r - R:根据其他数据框动态定义值范围
- flutter - 如何在颤动中禁用 ForceDark
- javascript - 尝试借助 Vuejs 中的列表和网格视图中的分页显示数据时出现问题?
- python - Qiskit-Textbook 是在哪里下载的?
- visual-studio - 分析服务视觉工作室中的错误