从函数本身获取标准库函数的点分隔路径

问题描述 投票:-2回答:1

有没有办法获得标准库函数的全名(函数的点分隔路径,包括其名称)?例如:

import sys
import os
from random import choice

my_function = choice([sys.exit, os.path.join, os.getcwd])

print(my_function) # Somehow generate full name of the built-in function
# Would expect to get one of 'sys.exit', 'os.path.join' or 'os.getcwd'
python python-3.x standard-library
1个回答
1
投票

您可以使用函数的__module____qualname__属性获取您正在寻找的信息(在Python 3下)。例如:

>>> import sys
>>> func = sys.exit
>>> print('{}.{}'.format(func.__module__, func.__qualname__))
sys.exit

这也适用于班级成员:

>>> import email.message

>>> func = email.message.Message.get_payload
>>> print('{}.{}'.format(func.__module__, func.__qualname__))
email.message.Message.get_payload

这是Python 2.x下的一些工作,因为__qualname__属性不可用:

>>> print('{}.{}.{}'.format(func.__module__, func.im_class.__name__, func.__name__))
© www.soinside.com 2019 - 2024. All rights reserved.