繁体   English   中英

在Python类的方法内部通过“自”获取变量的名称

[英]Get variable's name by 'self' inside of a method of a class in Python

我有以下代码:

class A:
    def m(self):
        print(...) # 'my_var' should be printed

my_var = A()
my_var.m()

我应该在m内键入什么代码以输出创建的变量的名称? 我需要针对Python 3的解决方案。

对象在任何给定时间都不知道它们碰巧绑定到什么名称空间变量。 此类变量对对象具有前向引用,但是对象不对潜在多个变量保持后向引用。 导入的模块在sys.modules中列出,您可以为您的对象扫描这些模块。 这将捕获模块级变量,但不能捕获碰巧也包含该变量的任何容器,类,类实例或局部函数名称空间。

test1.py-实现在已知模块中进行自我扫描的类

import sys

class A:

    def m(self):
        for name, module in sys.modules.items():
            try:
                for varname, obj in module.__dict__.items():
                    if obj is self:
                        print('{}.{}'.format(name, varname))
            except AttributeError:
                pass

a = A()

test2.py-测试代码

import test1

my_a = test1.a
my_a.m()

运行代码

$ python3 test2.py
__main__.my_a
test1.a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM