面向对象

(Object Or’iented Programming)OOP:面向对象就是一种分类的过程

类和对象:

1、面向对象是编程的一种方式,需要"类"和"对象"实现,也就是说面向对象就是对“类” 和 “对象” 的使用。
2、类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类:静态的属性
方法
对象:类的一个实实在在的案例

class ClassName:
<xxxx1>
.
.
.
<xxxxN>

类有一个为 init() 的特殊方法(构造方法),该方法在类实例化时会自动调用
例如:

class Complex:
def __init__(self, realpart, imagpart):
    self.r = realpart
    self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)   # 输出结果:3.0 -4.5

python中用class关键字来定义一个类,然后再创建一个对象
self关键字能让类中的函数能够明确的引用对象的数据和函数,指的是类对象的对象的属性

每个对象都有一个其自己的所对应的属性

例如:用面向对象求矩形的周长和面积

Python面向对象的原则 python中的面向对象_Python面向对象的原则


Python面向对象的原则 python中的面向对象_Python面向对象的原则_02

面向对象的编程语言有三个特征:
1.封装
2.继承
3.多态

  • 封装

将属性私有化,提供公开的方法来设置和访问
Python三种封装写法:
(1).常规写法
将属性私有 __属性名称
(2).调用全局函数property,将set和get传递过去
对象.属性名称
(3).使用annotation(注解)property来二次封装(注意:此处存在一个伪重载)

Python面向对象的原则 python中的面向对象_面向对象_03

  • 继承(extend):

类似于java private 表示除了类本身,其他的都不能访问

类似于java protected 表示除了本身,子类也允许访问

Python面向对象的原则 python中的面向对象_多态_04

Python面向对象的原则 python中的面向对象_Python面向对象的原则_05

多态:
父类引用指向子类实例的现象,叫做多态
python是弱数据语言,而弱数据类型语言天生支持多态

函数的重载(overload)
函数名称相同,参数的个数或类型不同
注意:python中没有函数重载,因为python弱数据类型语言

函数的重写/覆盖(override)
说的是面向对象继承中,子类继承了父类的方法,但不满足子类的需求
从而重新覆盖父类的方法的现象