Python中对应Java MyClass.class.getName()的无实例类名获取方法
Python 无实例场景下可靠获取类名方案
核心实现方式
Python 中类本身是一等对象,无需创建实例即可直接访问类的__name__属性获取类名,类重命名后该属性会自动同步更新,彻底避免硬编码字符串失效的问题。
代码示例
不可靠的硬编码写法
unreliable_name = "MyClass" # MyClass 重命名后该值不会同步更新,会产生错误
可靠的动态获取写法
reliable_name = MyClass.__name__ # MyClass 重命名后该值会自动同步为最新类名,始终正确
扩展功能实现
如果需要实现类似C#nameof关键字的通用能力,支持获取函数、变量等任意标识符的名称,可以自行实现简单的工具函数:
def nameof(identifier): return identifier.__name__ # 用法示例 print(nameof(MyClass)) # 输出类名 print(nameof(custom_func)) # 输出自定义函数名
如果需要获取类似JavagetName()返回的包含模块路径的全限定类名,可以拼接类的__module__和__qualname__属性:
# 获取全限定类名,包含模块路径与嵌套类结构信息 full_class_name = f"{MyClass.__module__}.{MyClass.__qualname__}"
内容的提问来源于stack exchange,提问作者Dave Doknjas
相关产品推荐
相关产品推荐

