如何让python对象的__str __()知道自己的名称

时间:2019-12-13 20:57:48

标签: python string local-variables globals

在定义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')之类的东西,该函数虽然有效但并不美观。

0 个答案:

没有答案
相关问题