一、什么是面向对象编程
对象是一个抽象的概念,万事万物都是对象
例如人有年龄,姓名,身高体重,电话号码........这些属性组成了人这个对象
车,生产厂家,汽车品牌型号,价格,里程数,耗油量...这也组成了一个对象
面向对象编程就是将这些属性打包成一个类来表示。
二、面向对象代码应该如何编写
a、规则
class 类名: # 定义了一个类
def __init__(self,*args,**kwargs) #这也是"方法"
self.*args=arg #实例变量
self.**kwargs=kwarg
def 函数名(self): # 在类中编写了一个"方法"
pass
调用:
x1 = 类名() # 创建了一个对象/实例化一个对象
x1.函数名() # 通过对象调用其中一个方法.
b、什么时候写?
- 当函数中有大量的公共值时可以进行归类
- 提取公共值
2、构造方法
构造方法的目的是进行数据初始化,通过构造方法,可以将数据进行打包,以后使用时,取其中获取即可
3、 应用
- 将数据封装到对象中,以供自己在方法中调用
- 将数据封装到对象中,以供其他函数调用
三、面向对象的三大特性
1、封装
- 将相关功能封装到一个类中
- 将数据封装到一个对象中
#1
class Message:
def email(self):
pass
def msg(self):
pass
def wechat(self):
pass
#2
class Person:
def __init__(self,name,age,gender):
self.name=name
self.age=age
self,gender=gender
foo=Person("一二三",25,“男)
2、继承
1、继承编写
class Son(父类):
pass
2、支持多继承(现在自己的类中找,没有就去父类中找)
3、为什么要有多继承?是为了提供代码的重用性
3、多态:多种形态或多种状态
鸭子模型:
def func(args):
pass
func(args)#arg有多种形态
四、函数式编程与面向对象编程的对比
1、对比:
函数:定义简单/调用简单
面向对象:定义复杂/调用复杂 好处:归类,将某些类似的函数写在一起
总结:
1. 函数式编程可能会比面向对象好.
2. Python中支持两种编程方式.