You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:50:43