Python 在另一个方法中调用另一个方法
对Python来说有些陌生,但这是一个关于编写函数而不重复自己的问题 使用Python 在另一个方法中调用另一个方法,python,function,openpyxl,dry,Python,Function,Openpyxl,Dry,对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_r
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的某些方面在这里可能会有所帮助?不要使用单独的变量,将所有工作表放在一个列表中。然后你可以通过索引访问你想要的 第一个代码将初始化列表:
self.sheets = [self.wb['sheet1'], self.wb['sheet2'], self.wb['sheet3']]
然后,您的另一个方法可以采用可选索引
def find_text_row_number(self, text, sheet_num = 3):
sheet = self.sheets[sheet_num-1]
text_row_number = set([])
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)
要处理表2
,请使用
x.find_text_row_number("text", sheet_num = 2)
尝试:
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)