Существует разница между print a, b
и print (a,b)
:
>>> a, b = "ab"
>>> a
'a'
>>> b
'b'
>>> print a, b
a b
>>> print (a, b)
('a', 'b')
print a, b
печатает два объекта a
и b
. print (a, b)
печатает один объект, кортеж a, b
:
>>> w = sys.stdout.write
>>> _ = w(str(a)), w(' '), w(str(b)), w('\n')
a b
>>> _ = w(str((a,b))), w('\n')
('a', 'b')
Или, говоря иначе:
>>> class A:
... def __str__(self):
... return '1'
... def __repr__(self):
... return 'A()'
...
>>> print A(), A()
1 1
>>> print (A(), A())
(A(), A())
__str__
метод вызывается, когда вы делаете str(obj)
. Если метода __str__
нет, метод __repr__
называется repr(obj)
.