类与对象的关系
在Python语言中,数据都被抽象为类,类的实例称为对象。

下面的案例,演示了类和对象的关系。
num = 12
这是一条变量赋值语句,创建变量num,将数值12赋值给num。我们来看Python执行这条语句的过程。
因为12是一个整数,整数对应数据类int类。Python解释器会加载int类到内存并初始化为12,int类初始化的过程也称为类的实例化,实例化的类被称为对象,对象的内存地址赋值给变量num,此时变量num指向了实例化后的int对象,变量名称num也可以称为对象num。

每个对象都有各自的编号、类型和值。一个对象被创建后,编号不会改变,也可以把编号理解为该对象在内存的地址。内置函数type可以查看对象的类型,内置函数id可以查看对象的编号(对象的编号也称为对象的id值),对象的值可以使用内置函数print查看。
案例1:查看int对象的编号、类型和值

在案例01中,<class ‘int’>表示num的类型是一个类,该类是int类。在后面的课程中,整数类型是指int类,整数对象是指int类的实例化对象。
认识类
类是对事物的抽象,抽象是从众多的同类事物中抽取出具有共同特征的过程及方法。
例如:苹果、香蕉、葡萄等都属于水果类别,假如我们要给水果找出共同特点,就需要抽取(抽象)苹果、香蕉、葡萄的共同特征,舍弃其不同的特征。一般说来苹果、香蕉、葡萄都具有汁液多、糖分多、并且还含有挥发性芳香物质、可以生食等特点。具备上述特点的一般都可以归类为水果。

抽象就是对同类事物的概括和归纳,前面例子的苹果、香蕉、葡萄是现实中的事物,人们在品尝的同时,抽取它们共有的特点,并起了一个新名称水果,来概括和归纳具有苹果、香蕉、葡萄共同特点的所有事物。例如:生梨、桃子也具备苹果、香蕉、葡萄的共同特点,因此生梨和桃子也可以归类为水果。
回到编程语言,水果可以称之为类,而苹果、香蕉、葡萄可以称之为类实例化的对象。类是抽象出来的事物,现实生活中并不存在,例如水果,水果是人们赋予具有苹果、香蕉、葡萄等共同特点的名称,不单指某一事物;对象是指具体的实物或概念,例如苹果、香蕉、葡萄等对象是实物。

既然类是对同类事物的概括和归纳,类就具有同类事物的属性和行为。
属性是事物的特征,例如:水果类有汁液多、糖分多、含有挥发性芳香物质等属性;Python提供的int类有编号、类型、值等属性。
事物的行为在类中也称为方法。例如:水果类的开花、落果、膨大、成熟等方法;Python提供的int类有bit_length()、to_bytes()等方法。

在Python中,类被实例化为对象后,就可以调用类的方法了。因为对象是类的实例,也可以称为调用对象的方法。
调用对象方法的语法如下:
对象名.方法名(参数)
案例2:调用整数对象的方法
整数对象的bit_length()方法,返回int对象的值以二进制表示所需要的位数。内置函数bin返回一个字符串,该函数将一个整数转变为一个前缀为“0b”的二进制字符串。
bin函数声明:
bin(x)
其中,bin是函数名称,x是传入的参数,类型是整数类型。

在案例02中,使用bin函数输出了整数对象num值的二进制字符串“0b1100”,“0b”是前缀字符,num值的二进制位数是4位,然后调用整数对象num的bit_length()方法获取num值的二进制位数。
序列对象
序列类型(序列类)实例化后称为序列对象。序列类型指是有序排列的多个元素,可以通过元素所在序列的位置(索引)来访问每个元素。
基本的序列类型有list(列表)、tuple(元组)、range(数字序列),此外还有文本序列类型,用于二进制数据处理的序列类型。这些序列类型在后面的课程都会单独介绍。
序列类型支持如下通用操作,有些操作在前面的课程已经介绍过。下表中的s 和 t 是具有相同类型的序列,i, j 和 k 是整数而 x 是任何满足 s 所规定的类型和值限制的任意对象。

注释
(1)in和not in是成员运算符,用于判断x是否在序列s内。对in运算符来说,如果x和序列内的某一元素内容相同,则结果为True;对not in运算符来说,如果x和序列内的某一元素内容相同,则结果为False。
(2)s+t用于将两个序列对象拼接成一个新的序列对象。
(3)s * n 或 n * s用于将序列对象s自身拼接n次,该操作会创建一个新的序列对象。
(4)s[i] 用于访问索引为i的序列对象s的元素,也就是序列对象s的第i项(起始为0)。
(5)s[i:j] 用于切片(也称为截取)序列对象s,切片范围为从索引i到索引j-1的元素(不含索引j的元素)。
(6)s[i:j:k] 用于切片序列对象s,切片范围为索引号i,i+k,i+2*k,i+3*k,以此类推,当到达j时停止,但一定不包括j。
(7)len是内置函数,用于求序列对象s的长度。
(8)min是内置函数,用于求序列对象s的最小项。
(9)max是内置函数,用于求序列对象s的最大项。
(10)index()是序列对象s的方法,s.index(x)返回x在序列对象s的索引号,如果序列对象s不含x,则会引发ValueError异常。
(11)count()是序列对象s的方法,s.count(x)返回x在序列对象s出现的总次数。