1、类和对象的关系

类就相当于<模板>或者<模具>,对象就相当于<产品>。

得有了类,我们才能制造各种对象。就像我们有了模具,才能生产各种产品一样。

Python中,万事万物都可以是对象,【类】这种模板层级的本身也是【对象】,但并不是【实例对象】。

从模具变成产品,也就是从【类】变成【实例对象】的过程,就叫做【实例化】。

2、实例化的基本格式

python类和对象详解 python中类和对象的关系_类属性

实例化后再使用的格式,①是空着的,意思是这里不再需要@classmethod的声明,并且在第②处,把cls替换成了self。

同时,实例化后再使用的格式,需要先赋值然后再调用(第③处)

在第④步骤,我们需要用实例名 = 类()的方式(实例名其实就是任取一个变量名),为类创建一个实例,然后再使用实例名.函数()的方式调用对应的方法。

当我们完成实例化后,对应于一个实例的属性和方法,叫“实例属性、实例方法”,不再称为“类属性、类方法”。

3、实例属性和类属性

类和实例的关系,就像母体和复制品的关系一样。当一个类实例化为多个实例后,实例将原封不动的获得类属性,也就是实例属性和类属性完全相等。

①我们可以修改类属性,这会导致所有实例属性变化(因为类是模板)。

②我们也可以修改实例属性,但这不会影响到其他实例,也不会影响到类。因为每个实例都是独立的个体。

③新增也是一样的道理,在类中新增属性会影响到实例,但在实例中新增属性只影响这个实例自己。

4、实例方法和类方法

①和类属性一样,我们可以重写类方法,这会导致所有实例方法自动被重写。

“重写类方法”分成两个步骤:第一个步骤是在类的外部写一个函数,第二个步骤是把这个新函数的名字赋值给类.原始函数:

要注意的是,这里的赋值是在替换方法,并不是调用函数,所以【不要加上括号】—— 写成类.原始函数() = 新函数()是错误的。

python类和对象详解 python中类和对象的关系_python类和对象详解_02

 我们可以通过重写类方法,让实例方法发生变化,但我们不能重写实例方法,模板给的技能不是说换就能换的。

5.总结

① 修改类属性和类方法,将会影响所有的实例;

② 修改某个实例的属性,只会影响这个实例本身;

③ 不能修改实例的方法。