在定义python对象时,我希望它的 str ()函数知道它的名称以进行漂亮的打印。这是上下文:
class People():
def __init__(self,city):
self.city=city
def __str__(self):
return f'??? lives in {self.city}.'
Tom = People('Toronto')
Jerry = People('Montreal')
print(Tom)
print(Jerry)
# output is
# ??? lives in Toronto.
# ??? lives in Montreal.
# but would like to see
# Tom lives in Toronto
# Jerry lives in Montreal
我们可以假设一个People
对象总是在像Tom=People('Toronto')
这样的赋值语句中创建的,并且从未与其他名称进一步关联。因此,无需担心Tom = Jerry
引起的麻烦。我认为解决方案可能涉及globals()
或locals()
,但思路不清。
如果我们定义诸如def __init__(self, city, name)
之类的初始化函数,那么用户将不得不输入诸如Tom=People('Toronto','Tom')
之类的东西,该函数虽然有效但并不美观。