Learning Python 之 Python中的对象分类

来源:互联网 发布:求多维数组最大值 编辑:程序博客网 时间:2024/05/17 07:37

Python中的对象之间有联系也有区分,如字符串和列表都可以执行切片、索引等操作,说明字符串和列表之间是有关系的,那么理清这些关系有助于我们更好的理解python。

我们知道,字符串是不可变类型(immutable)的序列(sequences):字符串不能够在内存中直接改变(例如:>>> 'python'[0] = m这个操作并不能够改变python这个字符串对象,不可变性是不可变类型的属性);字符串是有序的按位置排列的集合体(collections),可以通过偏移量访问其中的不同部分(序列类型的属性)。相同的类型之间有共同的属性,他们可以执行一些相同的操作,就像字符串和列表一样。

分类图:

这里写图片描述

类型

数字:(整数、浮点数、decimal、分数等)

支持加减等操作

序列:(字符串、列表和元组)

支持索引、切片、连接等

映射mappings:(字典)

支持通过键值索引等

值得注意的是,集合(sets)即不是序列,它是无序的;也不是映射,它不支持键值索引,它自成一类(a category unto themselves)。

可变性(Mutable?)

可变类型(Mutable)和不可变类型(Immutable)在Python是一个十分重要的概念。如果一个对象是不可变类型,那么就不能够直接改变他的值(可以通过赋值覆盖,等于创建了一个新的对象),否则会抛出错误,就像这样:

>>> 'python'[0] = 'm'Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: 'str' object does not support item assignment

这两类的具体划分:

不可变类型:(数字、字符串、元组和forzensets)

该类型的对象都不支持直接改变内容或本身(cannot in-place change)。如果需要的话我们可以通过创建一个新对象覆盖原来的对象来实现。

可变类型:(列表、字典、集合和bytearray)

相反的,该类型的对象可以通过操作直接改变,而不需要创建一个新对象,尽管这类对象也支持复制,但可变类型的对象可以直接修改。
原创粉丝点击