面向对象
(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关键字能让类中的函数能够明确的引用对象的数据和函数,指的是类对象的对象的属性
每个对象都有一个其自己的所对应的属性
例如:用面向对象求矩形的周长和面积
面向对象的编程语言有三个特征:
1.封装
2.继承
3.多态
- 封装
将属性私有化,提供公开的方法来设置和访问
Python三种封装写法:
(1).常规写法
将属性私有 __属性名称
(2).调用全局函数property,将set和get传递过去
对象.属性名称
(3).使用annotation(注解)property来二次封装(注意:此处存在一个伪重载)
- 继承(extend):
类似于java private 表示除了类本身,其他的都不能访问
类似于java protected 表示除了本身,子类也允许访问
多态:
父类引用指向子类实例的现象,叫做多态
python是弱数据语言,而弱数据类型语言天生支持多态
函数的重载(overload)
函数名称相同,参数的个数或类型不同
注意:python中没有函数重载,因为python弱数据类型语言
函数的重写/覆盖(override)
说的是面向对象继承中,子类继承了父类的方法,但不满足子类的需求
从而重新覆盖父类的方法的现象