Python学习09_面向对象进阶

@property装饰器

如果想要访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作。如果要做到这点可以通过@prpperty保障其来保障getter和setter方法,使得能够既安全又方便地堆属性访问。

image-20210217115459377

__slots__

Python是一门动态语言,它允许我们在程序运行时给对象绑定新的属性或方法,当然也可以对已经绑定地属性和方法进行解绑定。可以通过__slots__对当前类的对象进行限定,时期只能绑定某些属性。

image-20210217120707154

静态方法和类方法

写在类中的方法并不需要都是对象方法,也可以是静态方法。

image-20210217121615805

和静态方法类似,python还可以在类中定义类方法,类方法的第一个参数约定名为cls,它代表的是当前类相关的信息的对象,通过这个参数我们可以获取和类相关的信息并且可以创造出类的对象。

image-20210217122742574

类之间的关系

类和类之间的关系有三种:

  • is-a关系,也叫做继承或泛华,比如学生和人的关系,手机和电子产品的关系。
  • has-a关系,通常成为关联。比如部门和员工的关系,汽车和引擎的关系。
  • use-a关系,通常称之为依赖。比如司机有一个驾驶的行为,其中用到了汽车,那么斯基和汽车的关系就是依赖。

利用类之间的这些关系,我们可以在已有类的基础上来完成某些操作,也可以在已有类的基础上创建新的类,这些都是实现代码复用的重要手段。复用现有的代码不仅可以减少开发的工作量,也有利于代码的管理和维护。

继承和多态

我们可以在已有类的基础上创建新类,这其中的一种做法就是让一个类从另一个类那里将属性和方法直接继承下来,从而减少重复代码的编写。提供继承信息的我们称之为父类,也叫超类或基类;得到继承信息的我们称之为子类,也叫派生类或衍生类。子类除了继承父类提供的属性和方法,还可以定义自己特有的属性和方法,所以子类比父类拥有的更多的能力,在实际开发中,我们经常会用子类对象去替换掉一个父类对象,这是面向对象编程中一个常见的行为,对应的原则称之为里氏替换原则。

image-20210217124531278

image-20210217124548093

子类在继承了父类的方法后,可以对已有的方法给出新的实现版本买这个动作称之为方法重写(override)。通过方法重写我们可以让父类的同一个行为在子类中拥有不同的实现版本,当我们调用这个经过子类重写的方法时,不同的子类对象会表现出不同的行为,这个就是多态(poly-morphism)。

image-20210217124730925

不积硅步,无以至千里。
原文地址:https://www.cnblogs.com/wyloving/p/14408650.html