【发布时间】:2013-01-07 12:20:45
【问题描述】:
字符串的类比是正确的:
string1 = 'abc'
''.join(string1) == string1 # True
那么为什么这不成立:
list1 = ['a', 'b', 'c']
[].extend(list1) == list1 # AttributeError: 'NoneType' object has no attribute 'extend'
type([]) 返回列表。为什么它会被视为 NoneType 而不是具有扩展方法的列表?
这是一个学术问题。我不会这样做是常规代码,我只是想了解。
【问题讨论】:
-
附带说明一下,从 API 的角度来看,您可能会觉得这很有趣。不同之处在于字符串是不可变的,因此字符串方法必须返回新的字符串。列表是可变的,因此可以使用列表方法来修改对象本身。当对象本身被修改时,最好返回
None以让用户知道列表已被修改。 -
Python 列表没有流畅的接口,在this thread 中我提出了具有这种行为的自定义列表类型。
-
这绝对不是一模一样的副本。
标签: python