如何在继承文件的decorator函数中获取python文件名

如何在继承文件的decorator函数中获取python文件名,python,python-3.x,Python,Python 3.x,我有一个主类和继承类。我在主类中有一个decorator函数。 下面是base.py中的代码 def functionErrorCase(functionParam): def wrapper(self): try: functionParam(self) except Exception as e: self.InsertError(os.path.basename(__file__), functionP

我有一个主类和继承类。我在主类中有一个decorator函数。 下面是base.py中的代码

def functionErrorCase(functionParam):
    def wrapper(self):
        try:
            functionParam(self)
        except Exception as e:
            self.InsertError(os.path.basename(__file__), functionParam.__name__)
    return wrapper
用于继承类中的所有函数 “_uu文件_uu”命令返回base.py文件名,但我需要所用类的文件名


如何返回使用过的类文件名?

全局变量
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果您的代码位于
base.py
中,则它将找到该文件名。要从另一个模块中读取该文件,您需要从其全局文件中读取
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
。您可以通过函数的
\uuu globals\uuu
属性方便地访问函数的全局。因此,您可以尝试
functionParam.\uuuu全局文件\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


但可能还有一个更好的选择,它根本不需要使用
\uuuu文件
。Python函数有一个
\uuuuuuu模块
属性,用于命名它们在其中定义的模块。如果文件名末尾不需要
.py
,那么这可能比
\uuuuuuuuuuuuuuuuuuuuu文件
更有用。您也可以考虑使用函数的<代码> .yQualNaveX.<代码>,而不是常规的代码>代码> .NAMEEX<<代码>,因为前者将包含任何类的名称,函数在(例如,代码>)Fo.bar中被声明为< <代码> > <代码> B/<代码>方法>代码> Foo类).

您是否知道
\uuuuu模块
属性、
检查
回溯
模块??请注意,
\uuuuuu质量名称
不包括模块名称,只包括模块内的路径。
\uuuu模块\uuuu
包含模块名称。@MisterMiyagi:谢谢您的更正。我已经编辑了我的答案,正确地陈述了事情<代码>\uuuu qualname\uuuu
仍然很有价值,但是在这种情况下,你完全正确的认为
\uuuu模块\uuuu
更符合提问者的要求。FWIW,我认为
函数参数。
是OP想要的。谢谢你回答这个问题。我写了functionParam.\uuuu globals\uuuu[''文件\uuuuuu']命令,然后工作