长话短说:
# this works as expected:
logging.error(my_object.__unicode__())
# this doesn't:
logging.error(my_object)
与__str__(self)
相同的结果。
为什么呢?
编辑:__str__
确实有效。
答案 0 :(得分:1)
>>> class MyClass(object):
... def __str__(self):
... return "foobar"
...
>>> import logging
>>> logging.error(MyClass())
ERROR:root:foobar
按预期工作?!
答案 1 :(得分:1)
记录将调用str()
(使用__str__()
,当__repr__()
未定义时,{{1}}会回退到{{1}}。这是因为日志记录框架不是Unicode安全的(即,当您尝试将Unicode写入各种日志记录接收器时,您可能会收到错误。)