Python中如何从另一个类获取外部文件中类的函数输出?
解决获取FileOp类filenameis返回值的问题
问题场景
现有外部文件中的FileOp类代码如下:
class FileOp(tk.Frame): def __init__(self, parent, *args, **kwargs): tk.Frame.__init__(self, parent, *args, **kwargs) self.on1 = False def filenameis(self,parti): return parti def clickfun(self): if not self.on1: self.button_1.config(image = self.on) self.on1 = True #self.parti = self.filenameis((r'\310'))
需求:构建另一个类,不修改FileOp类代码的前提下,获取并打印filenameis方法的返回值。
用户尝试的代码存在问题:
self.fn = '' self.fnb = Button(self,text="get name", command= lambda: self.fn = FileOp.filenameis ) print("this is what it prints",self.fn) filename = (r"C:\Users\15027\Desktop\real\Dataset"+filenameis+"\summary.csv")
错误点说明
lambda表达式内不能直接使用赋值语句(self.fn = ...是语句,不符合lambda只能是表达式的规则)FileOp.filenameis是类方法引用,没有创建FileOp实例,无法正确调用实例方法- 直接引用
filenameis变量是错误的,它是FileOp类的方法,不是全局变量
正确实现方式
构建一个包含FileOp实例的主类,通过实例调用filenameis方法获取返回值,示例代码如下:
import tkinter as tk from your_external_file import FileOp # 替换成实际的外部文件路径 class MainApp(tk.Tk): def __init__(self): super().__init__() self.title("获取FileOp返回值示例") # 创建FileOp实例 self.file_op = FileOp(self) self.file_op.pack() self.fn = "" # 正确绑定按钮命令:调用实例的filenameis方法,获取返回值 self.fnb = tk.Button(self, text="get name", command=self.get_filename) self.fnb.pack(pady=10) def get_filename(self): # 调用FileOp实例的filenameis方法,传入参数 self.fn = self.file_op.filenameis(r'\310') # 打印返回值 print("this is what it prints", self.fn) # 拼接完整路径 full_path = rf"C:\Users\15027\Desktop\real\Dataset{self.fn}\summary.csv" print("完整路径:", full_path) if __name__ == "__main__": app = MainApp() app.mainloop()
关键点说明
- 必须创建
FileOp的实例self.file_op,因为filenameis是实例方法,只能通过实例调用 - 按钮命令绑定到普通方法
get_filename,避免lambda的赋值语句限制 - 使用
rf""格式化字符串,避免转义字符问题,确保路径拼接正确
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

