NoneType和str的不支持的操作数类型

时间:2011-01-17 22:27:40

标签: python

我收到一条消息,说明:

Traceback (most recent call last):
 File "/var/www/fosa/error_supressor.py", line 46, in <module>
   sys.stderr.write(latest + '\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

我一直试图解决这个问题好几天,但说实话,我是一个多才多艺的程序员。 因此,让我们排队问题,看看是否有一个耐心的人可以节省一些时间来解决一个不起眼的陌生人的问题: - )

除此之外,当我检查我的错误日志时,我发现此错误消息,我怀疑它是相关的:

File "/var/www/fosa/app/controllers/client/client.py", line 601, in detail
    if not course.bookable or not course.school.partner.active: # both objects are boolean 
AttributeError: 'NoneType' object has no attribute 'bookable'

2 个答案:

答案 0 :(得分:4)

  • 有些内容将None绑定到latest。弄清楚它是什么并修复你的逻辑错误。

  • 有些内容将None绑定到course。图等。

答案 1 :(得分:3)

显然,从追溯中,人们有: - latest为无 - course为无

python中的一个常见模式是将变量名称始终绑定到唯一类型,除非可以分配的最有意义的值是“null”值,在这种情况下,您将使变量等于{ {1}}。例如。说None从数据库返回一个对象,但当没有对象get(pk)的对象时,它返回None。要解决这个问题我会这样做:

写下如下内容:

pk

或者

if latest is None:
     # do something
else:
     sys.stderr.write(latest + '\n')

而不是

sys.stderr.write('%s\n' % latest) #so that latest can be of any type