Python 在类中,如何将输出文件命名为该类未来实例的名称

Python 在类中,如何将输出文件命名为该类未来实例的名称,python,pandas,class,dataframe,instance,Python,Pandas,Class,Dataframe,Instance,我是创作课的初学者。在我的类中,我定义了一个输出csv文件的函数。但是,我想用未来实例的名称命名csv文件名。 这里有一个虚拟代码,希望能解释我想要做什么 class output function() df.to_csv('output.csv') a=output() a.function() 我想要的结果是:输出csv文件-a.csv 如何实现上述目标?编写代码的合适方法是将csv文件的名称或其中的一部分传递给对象的构造函数: #UNTESTED class

我是创作课的初学者。在我的类中,我定义了一个输出csv文件的函数。但是,我想用未来实例的名称命名csv文件名。 这里有一个虚拟代码,希望能解释我想要做什么

class output
     function()
         df.to_csv('output.csv')
a=output()
a.function()
我想要的结果是:输出csv文件-a.csv
如何实现上述目标?

编写代码的合适方法是将csv文件的名称或其中的一部分传递给对象的构造函数:

#UNTESTED
class output:
    def __init__(self, myname):
        self.myname = myname
    def function():
         df.to_csv(self.myname + '.csv')

a=output('a')
a.function()
没有什么有用的方法可以精确地完成你的要求。对象本身不知道绑定到对象的变量的名称

但是即使变量的名称是可用的,考虑这个:

a=output()
b=a
a.function()
b.function()
这两个.function调用发生在完全相同的对象上。对象不知道是创建.csv还是b.csv

更糟糕的是,关于:

lst[4] = dct["hello"] = output()
假设调用了.function,文件名是什么

我认为您所描述的是可能的,因为Python具有极强的动态能力。然而,这将是笨拙的,而且很可能不是实现目标的正确方法。简单地考虑< /P>
class output:
    def function(name):
        df.to_csv(name + '.csv')

a = output()
a.function('a')

一般来说,变量名称的选择不应影响代码的最终结果。

您只需将名称编码为与您使用的变量相匹配:df.to_csv'a.csv'。你被困在哪里了?你为什么要这么做?该文件与您决定在程序中使用的变量没有明显的关系。只需将输出文件的名称作为参数传递给函数,然后在函数内部的df.to_csv调用中使用它。@martineau有意义。我太贪婪了,试图在课堂定义中自动完成。最简单的方法是在生成实例时传递名称。感谢Rob的回答,虽然表面上相似ᵩ 更好,因为命名信息位于实例上,并且在多次调用function.df.to_csvself.myname+'.csv'时只需提供一次