这个主题讨论如何在Python中将函数的名称作为字符串获取:如何在Python中将 函数名称作为字符串获取?
如何为变量做同样的事情?(注意Python变量没有属性__name__,至少在Python中retrieve_name)
换句话说,如果我有一个变量,例如:
foo = dict()
foo['bar'] = 2
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个函数/属性,例如'foo':
retrieve_name(foo)
Run Code Online (Sandbox Code Playgroud)
返回字符串 __name__
既然人们在问我为什么要这样做,这里就是一个例子.我想在此列表中在Pandas中创建一个DataFrame,其中列名 由实际字典的名称给出:
# List of dictionaries for my DataFrame
list_of_dicts = [n_jobs, users, queues, priorities]
Run Code Online (Sandbox Code Playgroud) som = SOM_CLASS() # includes many big difficult data structures
som.hard_work()
som.save_to_disk(filename)
#then later or another program
som = SOM_CLASS()
som.read_from_file(filename)
som.do_anythink_else()
Run Code Online (Sandbox Code Playgroud)
要么
som = SOM_CLASS()
save(som)
#...
load(som)
som.work()
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?
我知道你不应该在程序中使用变量名,但我使用的是严格的调试目的,并希望将变量的名称传达给用户以提高可读性。
我有一个这样的文件:
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")
Run Code Online (Sandbox Code Playgroud)
我想m从类本身中检索实例变量名称。虽然这只是一个示例文件,但我使用它向用户传达已在实例变量中的某个属性处创建了原始套接字,并希望显示它的位置(即New socket at m.socket)
这对 Python 可行吗?
我在python中有一个变量x.如何从变量中找到字符串'x'.这是我的尝试:
def var(v,c):
for key in c.keys():
if c[key] == v:
return key
def f():
x = '321'
print 'Local var %s = %s'%(var(x,locals()),x)
x = '123'
print 'Global var %s = %s'%(var(x,locals()),x)
f()
Run Code Online (Sandbox Code Playgroud)
结果是:
Global var x = 123
Local var x = 321
Run Code Online (Sandbox Code Playgroud)
上面的食谱似乎有些不同寻常.是否有更好/更短的方法来实现相同的结果?
我想在C程序中使用相同的变量名和不同的数据类型而不进行强制转换.
我真的想这样做,不要问为什么.
那我该怎么办呢?
如果在进行预防性设置时该变量不存在,我该如何处理错误?
我想知道是否有一种方法可以将python中的对象名称打印为字符串。例如,我想说ENEMY1还剩2 hp或ENEMY2还剩4 hp。有办法吗?\
class badguy:
def __init__(self):
self.hp = 4
def attack(self):
print("hit")
self.hp -= 1
def still_alive(self):
if self.hp <=0:
print("enemy destroyed")
else :
print (str(self.hp) + " hp left")
# creating objects
enemy1 = badguy()
enemy2 = badguy()
enemy1.attack()
enemy1.attack()
enemy1.still_alive()
enemy2.still_alive()
Run Code Online (Sandbox Code Playgroud) 我有一个简单的类,我可以从中创建两个对象.我现在想要从类中打印对象的名称.所以像这样:
class Example:
def printSelf(self):
print self
object1 = Example()
object2 = Example()
object1.printSelf()
object2.printSelf()
Run Code Online (Sandbox Code Playgroud)
我需要这个打印:
object1
object2
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只是打印 <myModule.Example instance at 0xb67e77cc>
有人知道我怎么做吗?
我想知道这是否可能/如何可行.
我有一个Python对象类:
class myClass(object):
def __init__(self):
...do something
Run Code Online (Sandbox Code Playgroud)
然后我创建该对象的实例:
myObjectClass = myClass()
Run Code Online (Sandbox Code Playgroud)
从内部myClass,是否可以将变量(myObjectClass)的"名称" 作为字符串?
谢谢,亚当