Python 为什么打印(“字符串”,对象)会给出与打印(对象)不同的结果?
我定义了这个类:Python 为什么打印(“字符串”,对象)会给出与打印(对象)不同的结果?,python,Python,我定义了这个类: class Point(): def __init__(self,x,y): self.x = x self.y = y def __str__(self): return "Point x: {0}, Point y: {1}".format(self.x, self.y) 两种情况下打印(“点”,p1)和打印(p1)之间的区别是什么: p1=点(1,2) 打印(“点”,p1) 打印(p1) >>(‘点’,)
class Point():
def __init__(self,x,y):
self.x = x
self.y = y
def __str__(self):
return "Point x: {0}, Point y: {1}".format(self.x, self.y)
两种情况下打印(“点”,p1)和打印(p1)之间的区别是什么:
p1=点(1,2)
打印(“点”,p1)
打印(p1)
>>(‘点’,)
>>点x:1,点y:2
如果您使用的是python2.x,那么在您认为您像调用函数一样调用print的地方,您实际上是在使用print关键字打印元组
print(1,2,3)
print (1,2,3)
在python3中,您必须像函数调用一样执行它print(1,2,3)
所以在您的例子中,在python2.x中,您打印的是一个值的元组。Tuple Tuple对象将转换为字符串,Tuple中的每个值都将打印其表示形式。当您按以下方式打印它们:打印“点”,p1
,则每个项目都将转换为字符串并打印
print str(p1)
# Point x: 1, Point y: 2
print repr(p1)
# <__main__.Point instance at 0x00D96F80>
前者打印一个元组,其中包含
“点”
和p1
;在这种情况下,将使用\uu repr\uuu()
来生成输出字符串,而不是\uu str\uuu()
,但是,如果它在Python 3上,则会有所不同。或者如果使用了“打印功能”功能。。看看为什么当我们有_str__()时打印p1会有区别,因为序列不打印元素的字符串值,而是打印表示。
print str(p1)
# Point x: 1, Point y: 2
print repr(p1)
# <__main__.Point instance at 0x00D96F80>
class Point():
def __init__(self,x,y):
self.x = x
self.y = y
def __repr__(self):
return "Point x: {0}, Point y: {1}".format(self.x, self.y)