在Python中,术语方法不是 对于类实例是唯一的:其他 对象类型也可以有方法。 例如,列表对象具有方法 叫追加,插入,删除,排序, 等等。
我能找到的一个含义是错误:[].foo = 'bar'
。还有其他影响吗?为什么没有列出作为一个类实现?这是因为历史原因吗?
答案 0 :(得分:2)
列表是作为一个类实现的:
>>> [].__class__
<type 'list'>
只是你无法为它们分配任意属性。这同样适用于其他类型,例如字符串。
>>> "foo".bar = "something"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'bar'
答案 1 :(得分:2)
有些人可能会给你更好的解释,但我认为这是基础知识。
有一个time(前Python 2.2.3),其中[用户定义]类和类型并不完全相同。 Python总是有基本的内置类型,如int
s,float
s,list
s,tuple
s,dict
s等。当你打电话时type([])
,您得到type
,但不是class
。 Python内置类型不允许其对象具有附加其继承的属性。但是在Python版本中检查这个新式的类&gt; 2.3:
>>> class C(object):
>>> pass
>>> type(C())
<class '__main__.C'>
>>> type([])
<type 'list'>
我认为这就是教程所指的“术语方法不是类实例独有的:其他对象类型也可以有方法”。
有关type
和object
现在如何统一的详细说明,请检查this链接。
答案 2 :(得分:0)
列表对象 IS 属于(或是其实例)内置类型/类'列表'
例如:
>>> list1 = []
>>> print type(list1)
<type 'list'>
答案 3 :(得分:0)
许多内置类型(list,str,tuple,dict)是类(及其对象的实例),但为了提高运行时效率,它们不像类那样灵活你可以用纯Python写。语言实现折衷了在(例如)列表对象上设置任意属性以提高整体性能的能力。
答案 4 :(得分:0)
尽管是一个python newb,我会尝试自己回答这个问题。我在这里得到了一些很好的答案,但没有一个解释为什么不列出属于某个类的对象。
我认为没有“好”的理由,这只是遗产。它们最初是在Python上课之前实现的,并且还没有进行改装。