一、面向过程
面向过程编程(POP):按照业务逻辑从上到下设计程序的方式。 特点: 用一长段代码来实现指定功能,一步接一步,环环相扣。 缺点: 但是大型项目,如果使用面向过程编程,则很容易导致代码结构过于紧密、耦合度高,易出现代码冗余,不利于并且团队开发。
二、面向对象
面向对象编程 (OOP):将具有相关性的数据/行为封装成整体(对象),以整体的角度来完成处理 特点: 将数据和业务抽象为对象,有利于程序整体结构的分析和设计,使设计思路更加清晰 业务以对象为单位,对象各自完成工作,减少了代码耦合度,有助于业务升级和代码重构 方便工作划分,有利于提高团队开发的效率。
1、对象
是记录数据,完成行为的一个具体"事物"。比如具体某一个人 对象的组成: 属性: 用于记录与对象相关的数据,比如姓名,年龄等 方法: 用于实现与对象相关的操作,比如吃饭,睡觉等。
2、类
类(class):描述具有共同特征的事物的概念。物以类聚,人以群分。很多事物存在相同的操作/行为,比如人都进行吃饭、睡觉,狗都会跑会叫等等。
3、类与对象的关系
区分:类是总结事物特征的抽象概念,而对象是具体存在的实物某个。 关系:在编程中,类就是创建对象的制造手册,用来定义对象的行为。每个对象必须有一个对应的类。
'''
class 类名:
方法列表
'''
class dog:
def __init__(self, type):
'''
如何让创建出来的对象包含一些默认属性,并且有初始值?
__init__()方法叫做对象的初始化方法,在创建一个对象后会被自动调用,不需要手动调用
开发者可以实现init方法,并在该方法中定义属性并设置初始值
自定义__init__()
__init__(self)除了参数,还可以设置任意个数的自定义参数,例如self__init__(self,x,y,z)
init方法设置的自定义参数必须和创建对象时传递的参数保持一致,例如tom = Cat(x,y,z)
'''
self.age = 1 # 设置默认值狗的年龄
self.type = type
def __str__(self):
'''
如果直接打印对象,会看到创建出来的对象在内存中的地址
使用print输出对象的时候,只要对象定义了方法,就会打印该方法return的信息描述
字符串符的返回值必须是字符串类型
:return:
'''
return "名字是:%s,年龄是:%s" % (self.name, self.age)
def eat(self): # self对应的实参就是调用该方法的对象,self主要用于在方法中使用自己的属性和方法
print("狗吃骨头,它的名字是:%s" % self.name)
print("它的年龄是:%d" % self.age)
print("它是:%s" % self.type)
dog1 = dog("小型犬") # 创建对象,格式:引用对象的变量名 = 类名()
dog1.name = "来福" # 定义属性,格式:引用对象的变量名.属性名 = 数据