概述
Python从设计之初就已经是一门面向对象的语言,面向对象有三大特性:封装、继承和多态
封装:根据职责将属性和方法封装到一个类中
继承:可以实现代码重用,相同的代码不需要重复编写
多态:不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度
教程:
Python面向对象提升与收发邮件01
Python面向对象提升与收发邮件02
Python面向对象提升与收发邮件03
类
- 定义:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
__init__(self)
方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法- 语法:
class ClassName:
...
...
...
继承
- 继承是多态的前提
- 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。
- 通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。
- Dog类是Animal类的子类,Animal类是Dog类的父类,Dog类从Animal类继承
- Dog类是Animal类的派生类,Animal类是Dog类的基类,Dog类从Animal类派生
- 继承有单继承和多继承之分
- 单继承语法:
class 子类(父类):
pass
- 多继承语法:
class 子类名(父类名1, 父类名2, ...):
pass
多态
- 定义:一种事物的多种形态
作用:让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数。 - Python中多态的特点:
1、只关心对象的实例方法是否同名,不关心对象所属的类型;
2、对象所属的类之间,继承关系可有可无;
3、多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强;
4、多态是调用方法的技巧,不会影响到类的内部设计。 - Java中多态性的表现: 多态性,可以理解为一个事物的多种形态。同样python中也支持多态,但是是有限的的支持多态性,主要是因为python中变量的使用不用声明,所以不存在父类引用指向子类对象的多态体现,同时python不支持重载。在python中 多态的使用不如Java中那么明显,所以python中刻意谈到多态的意义不是特别大。Python中多态使用的并不多。
参考Python中的多态如何理解?
对象属性和类属性
- 对象属性需要用对象来调用,在
def __init__(self): ...
中写
如:
def __init__(self, name): # self 代表的是类的实例
self.name = name # 对象属性
- 类属性需要用类名来调用,类属性是用变量来表示的,此变量称之为类变量。类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 对象属性优先级高于类属性
- 可以动态的给对象添加对象属性,只针对于当前对象生效,对于类创建的其他对象没有作用
- 删除对象使用
del per.name
,再调用会使用同名的类属性(在同名类属性存在的前提下) - 尽量不要将类属性和对象属性重名,因为对象属性会屏蔽掉类属性