如何在继承文件的decorator函数中获取python文件名
我有一个主类和继承类。我在主类中有一个decorator函数。 下面是base.py中的代码如何在继承文件的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
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']命令,然后工作