Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python获取当前文件、当前类和当前方法? 从中运行代码的文件的名称 从中运行代码的类的名称 运行代码的方法(类的属性)的名称_Python_Filenames - Fatal编程技术网

如何使用Python获取当前文件、当前类和当前方法? 从中运行代码的文件的名称 从中运行代码的类的名称 运行代码的方法(类的属性)的名称

如何使用Python获取当前文件、当前类和当前方法? 从中运行代码的文件的名称 从中运行代码的类的名称 运行代码的方法(类的属性)的名称,python,filenames,Python,Filenames,对于其余部分,请使用sys和trace模块 更多信息: 和 您是否希望它用于错误报告,因为回溯模块可以处理: 以下是每种方法的示例: from inspect import stack class Foo: def __init__(self): print __file__ print self.__class__.__name__ print stack()[0][3] f = Foo() 小心点。考虑: class A:

对于其余部分,请使用sys和trace模块

更多信息: 和

您是否希望它用于错误报告,因为回溯模块可以处理:


以下是每种方法的示例:

from inspect import stack

class Foo:
    def __init__(self):
        print __file__
        print self.__class__.__name__
        print stack()[0][3]

f = Foo()
小心点。考虑:

class A:
    pass

B = A
b = B()
这里的
b
的“类名”是什么?是A还是B?为什么?


关键是,你不需要知道或关心。对象就是这样:它的名称很少有用。

您是否试图从命令行运行它?很明显,当时还没有定义;尝试用代码创建一个文件并使用python文件名-它将按预期工作。为什么不检查.currentframe?
self.\uuuuu class\uuuu
不是当前类。当前类是
\uuu class\uuuu
。类名是
A
,因为
b
b
的一个实例,而
b
又是对
A
的引用,后者是一个类;但在调试时非常有用——比如异常处理程序或类似的报告。您可以编写一个很好的错误消息来说明同样的事情,但无论如何,它经常会包含这些信息,在这种情况下,每次键入这些信息似乎是一种浪费。此外,为了构建(例如)一个通用日志包,能够自动提供这一功能非常有用。如果您的论点成立,它是否也同样适用于isinstance(),这肯定是重要和有用的?在模块之外使用私有方法是否被认为是一种不好的做法,并且违背了Python sys库的最初目的?没有更好的方法吗?
self.\uuuu class\uuu
不是当前的类。当前类是
\uuuu class\uuuu
self.\uuuu class\uuuu
不是当前类。当前类为
\uuuuuuuuuuuuuuuuuu
import sys

class A:
    def __init__(self):
        print __file__
        print self.__class__.__name__
        print sys._getframe().f_code.co_name

a = A()
class A:
    pass

B = A
b = B()