gpt4 book ai didi

python - 您可以从类中获取实例变量名称吗?

转载 作者:行者123 更新时间:2023-12-01 05:01:41 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Getting the name of a variable as a string

(25 个回答)



Getting an instance name inside class __init__() [duplicate]

(10 个回答)


6年前关闭。




我知道你不应该在程序中使用变量名,但我使用的是严格的调试目的,并希望将变量的名称传达给用户以提高可读性。
我有一个这样的文件:

class MyClass(object):
def __init__(self):
pass

def foo(msg=""):
debug("Called from the %s instance.") #quazi-print function that only prints when a DEBUG variable is True.
print(msg)

m = MyClass()
m.foo("Test")
我想找回 m类本身中的实例变量名称。虽然这只是一个示例文件,但我使用它向用户传达已在实例变量中的某个属性处创建了原始套接字,并希望显示它的位置(即 New socket at m.socket )
这对 Python 可行吗?

最佳答案

您可以查看实例的 globals字典并找到将自身作为值的项目。

class Foo(object):
def bar(self):
return [k for k,v in globals().items() if v is self]
def bah(self):
d = {v:k for k,v in globals().items()}
return d[self]

f = Foo()
g = Foo()

print f.bar(), g.bar()
print f.bah(), g.bah()

>>>
['f'] ['g']
f g
>>>

关于python - 您可以从类中获取实例变量名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com