首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么print(eval( repr (Instance)调用str函数而不是repr函数?

为什么print(eval( repr (Instance)调用str函数而不是repr函数?
EN

Stack Overflow用户
提问于 2021-02-17 06:11:48
回答 1查看 31关注 0票数 0

在下面的代码块中,为什么print(new)语句调用str函数而不调用repr函数。是不是因为调用了print函数?

代码语言:javascript
复制
class Robot:

    def __init__(self, name, build_year):
        self.name = name
        self.build_year = build_year

    def __repr__(self):
    return "Robot('" + self.name + "', " + str(self.build_year) + ")"

    def __str__(self):
    return "Name: " + self.name + ", Build Year: " + str(self.build_year)


if __name__ == "__main__":
    x = Robot("Marvin", 1979)


print(str(x))
print(x)
print(repr(x))
new = eval(repr(x))
print(new)


answer is 
Name: Marvin, Build Year: 1979
Name: Marvin, Build Year: 1979
Robot('Marvin', 1979)
Name: Marvin, Build Year: 1979
EN

回答 1

Stack Overflow用户

发布于 2021-02-17 06:27:10

请参阅docs for print

()一样,所有非关键字参数都会转换为字符串,并写入流<...>

所以,是的,print调用了对象的__str__

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66232911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档