如何在方法本身内部使用 use class 方法名称?
how to use use class method name inside method itself?
有没有更好的方法来获取 class.
中的函数名称
我想在不使用 self.boo
语句的情况下获取和 <str> "A.boo"
。
这是我 运行
的 test.py
import sys
import traceback
def foo():
print(foo.__name__)
print(foo.__qualname__)
print(sys._getframe().f_code.co_name)
print(traceback.extract_stack()[-2])
foo()
class A:
def boo(self):
print(self.boo.__name__)
print(self.boo.__qualname__)
print(sys._getframe().f_code.co_name)
print(traceback.extract_stack()[-2])
A().boo()
输出:
$ python test.py
foo
foo
foo
<FrameSummary file test.py, line 12 in <module>>
boo
A.boo
boo
<FrameSummary file test.py, line 21 in <module>>
import inspect
class A:
def boo(self):
print(self.__class__.__name__, end=“.”)
print(inspect.currentframe().f_code.co_name)
另一种方式:
from decorator import decorator
@decorator
def prints_merhod_name(method, *args, **kwargs):
self = args[0]
print(self.__class__.__name__, method.__name__, sep=“.”)
return method(*args, **kwargs)
class A:
@prints_method_name
def foo(self):
whatever
有没有更好的方法来获取 class.
中的函数名称我想在不使用 self.boo
语句的情况下获取和 <str> "A.boo"
。
这是我 运行
的test.py
import sys
import traceback
def foo():
print(foo.__name__)
print(foo.__qualname__)
print(sys._getframe().f_code.co_name)
print(traceback.extract_stack()[-2])
foo()
class A:
def boo(self):
print(self.boo.__name__)
print(self.boo.__qualname__)
print(sys._getframe().f_code.co_name)
print(traceback.extract_stack()[-2])
A().boo()
输出:
$ python test.py
foo
foo
foo
<FrameSummary file test.py, line 12 in <module>>
boo
A.boo
boo
<FrameSummary file test.py, line 21 in <module>>
import inspect
class A:
def boo(self):
print(self.__class__.__name__, end=“.”)
print(inspect.currentframe().f_code.co_name)
另一种方式:
from decorator import decorator
@decorator
def prints_merhod_name(method, *args, **kwargs):
self = args[0]
print(self.__class__.__name__, method.__name__, sep=“.”)
return method(*args, **kwargs)
class A:
@prints_method_name
def foo(self):
whatever