对象和类
由对象说起
对象与对象名称之间的区别
把变量理解为附加在对象上的标注。创建对象之后才会把变量分配给对象
例:变量 a 和 b 引用同一个列表,而不是那个列表的副本
1 | a = [1, 2, 3] |

类与实例
在Python中通常使用class
语句来定义一个类(类对象)
class
定义的对象(类)可以用于产生新的对象(实例)。
1 | class Person(): |
上面的例子中Person
是我们创建的一个新的类,
通过调用Person()
可以获得一个Person
类型的实例对象,
将其赋值为someone
,
就成功创建了一个与所有内置对象类型不同的对象someone
,
它的类型为__main__.Person
。
到这里,可以将Python中一切的对象分为两种:
可以用来生成新对象的类,包括内置的
int
、str
以及上面定义的Person
等;由类生成的实例对象,包括内置类型的数字、字符串、以及上面定义的类型为
__main__.Person
的someone
。
类中的属性对应前面所学习的变量,而类中的方法对应前面所学习的函数。
通过类,可以把数据和操作封装在一起,从而使得程序结构更加清晰,
这也就是所谓的类的封装性。
在类的内部,使用def
关键字可以为类定义一个方法,
与一般函数定义不同,方法必须包含参数self
,且为第一个参数。
1 | class Person(): |
特殊的对象初始化方法__init__
1 | # 初始化一个 Person 类的 name 属性 |
上面代码执行流程:
- 查看
Person
类的定义; - 在内存中实例化(创建)一个新的对象;
- 调用对象的
__init__
方法,将这个新创建的对象作为self
参数传入,并将另一个参数(‘小明’)作为name
传入; - 将
name
的值存入对象; - 返回这个新的对象;
- 将名字
someone
与这个对象关联。
提示:每次创建对象时,系统都会在内存中选择一块区域分配给对象,每次选择的内存通常是不一样的。因此,实际运行时会看到一个不同的 Person 对象地址。
1 | class Person(): |
注意:在类的内部,使用def
关键字可以为类定义一个方法,
当调用一个特定对象的方法时,Python
隐式地传递对该
对象的引用作为方法的第一个参数。
因此,在一个类中,所有方法必须包含参数self
,且为第一个参数。
类中的方法只能使用该引用(self)来访问对象的属性和其他方法。
总结:
- 对象既包含数据(称为特性/属性),也包含代码(称为方法)
- 类是对象的模板,从类制作对象的过程,称为类的实例化
- 在类的内部,方法定义时必须包含参数
self
,且为第一个参数 __init__
是初始化方法,当创建了实例时会调用该方法- 类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线,
实例名和模块名都采用小写格式,并在单词之间加上下划线
实例
创建一个名为 BankAccount
的类, 要求:
- 属性:
balance
(表示账户余额) - 方法:
deposit(amount)
,用于存款,返回账户余额。
withdraw(amount)
,用于取款,返回账户余额,若余额不足则返回“余额不足”信息。
get_balance()
,用于返回当前余额。
创建实例,并调用上述方法。
1 | class BankAccount: |