【问题标题】:Nonetype attribute? [duplicate]无类型属性? [复制]
【发布时间】:2015-05-04 22:45:50
【问题描述】:

我有一个名为 getListBackward(number) 的函数,其中 number 是一个列表。 我创建了一个名为 reversedNumbers = number.reverse() 的变量,但它说 AttributeError:“NoneType”对象没有“反向”属性。为什么我得到一个无类型?谢谢。

def getListBackward(number):
reversedNumbers = number.reverse()

AttributeError: 'NoneType' object has no attribute 'reverse'
EDIT:

What did I do wrong?

【问题讨论】:

  • 您应该为您的问题添加更多上下文,例如示例列表,以便我们执行此操作并重新创建您的错误
  • 标记的重复项将帮助您在 python 中获得反向条目。另外值得注意的是,reverse 就地修改了列表,它不返回值。实用函数reversed 以相反的顺序返回一个序列。

标签: python


【解决方案1】:

您将获得AttributeError,因为number 的类型为None。不管你传递的是什么getListBackward,事实上,None。从函数的名称来看,我敢打赌你的代码看起来像:

lst = [ ... ]  # some list of data
getListBackward(lst.sort())

如果是这种情况,那是因为lst.sort() 是对lst 进行排序并返回None 的就地函数。换句话说:

lst = [3, 1, 2]
lst.sort()  # returns None
print(lst)  # [1, 2, 3]

sorted(lst) 相比,它不是就地的,因此它不会修改原始lst,但它确实返回列表的排序副本

lst = [3, 1, 2]
sorted(lst)  # [1, 2, 3]
print(lst)  # [3, 1, 2]

【讨论】:

  • 我将如何让它返回resorted列表而不是“None”?谢谢
  • @user3222060 当您发表评论时,我已经提供了该答案。请重新阅读我的答案! :)
猜你喜欢
  • 2020-03-17
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
相关资源
最近更新 更多