+ 10
Can you write code to determine the name of an object in Python?
8 Answers
+ 4
There was an interesting discussion about this a while ago... I hoped I found the right one.
https://www.sololearn.com/discuss/1604705/?ref=app
+ 3
So No objects in Python have any associated names. So there is no way of getting the one for an object. The assignment is only the means of binding a name to the value. The name then can only refer to access the value. The most we can do is to find the reference name of the object
+ 2
I found a few other discussions about this topic, using the search bar, so your question may be a duplicate.
I quickly want to add, that generally you don't need to get and use the variable's name in the code.
Maybe you want to tell us, what you really want to do? There may be an easier way.
https://www.sololearn.com/discuss/1704493/?ref=app
https://www.sololearn.com/discuss/2152620/?ref=app
+ 2
Here is my example is it correct
class Test: def __init__(self, name): self.cards = [] self.name = name def __str__(self): return '{} holds ...'.format(self.name) obj1 = Test('obj1') print obj1 obj2 = Test('obj2') print obj2
+ 2
Second one nice globals demonstration. đ
BUT try this:
def VarName(var):
search=globals()
for item in search:
if(search[item]==var):
return item
a=20
b=[2,80]
c=[2,80]
print(VarName(a))
print(VarName(c))
Your method only works if a value exists only once.
+ 1
Please, if you post code, write it in a way that it actually runs, so that people who test it to answer don't have to fix all the indentations first.
You can also save it in Code Playground and link it here.
I have changed your code a bit.
class Test:
def __init__(self, name):
self.cards = []
self.name = name
def __str__(self):
return '{} holds ...'.format(self.name)
obj1 = Test('Willy')
print(obj1)
obj2 = Test('Betty')
print(obj2)
See what I did? I gave the objects different names to their variable names.
If this is all you want to do, making an object return a stored value if you print it, yeah, you can use __str__ or __repr__.
That's not the same as getting the name your object had in the code, you're just accessing an attribute.
0
Do you mean something like this?
https://code.sololearn.com/cDJALL39a3To/?ref=app
https://code.sololearn.com/cQXCz97Tzrke/?ref=app