python基础-19-初始面向对象

面向对象

参考:https://zhuanlan.zhihu.com/p/109292504

面向过程编程

  • 面向过程编程的核心是过程,就是分析出实现需求所需要的步骤,通过函数一步一步实现这些步骤,接着依次调用即可,再简单理解就是程序从上到下一步步执行,从头到尾的解决问题。举例:假设有一辆汽车,它的速度是80km/h,要从A地出发到B地,其中AB两地的距离是200km。要计算这辆车从A地到B地所花费的时间,用面向过程实现如下:
    在这里插入图片描述
  • Python是一门面向对象编程,而面向对象编程是程序员发展的分水岭,尤其对很多初学者来说,有时会因无法理解面向对象而放弃学习编程,所以接下来带大家了解面向对象编程思想:

面向对象编程

  • 面向对象编程是把构成事物的整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建对象的目的不是为了完成某一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
  • Python中一切皆对象,比如之前学过的变量其实也都是对象,包括整形(int)、浮点型(float)、字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
  • 举例:假设有一辆汽车,它的速度是80km/h,要从A地出发到B地,其中AB两地的距离是200km。要计算这辆车从A地到B地所花费的时间,用面向对象编程实现如下:
    在这里插入图片描述

面向过程VS面向对象

  • 通过以上,可以看出面向过程和面向对象有以下区别:
  • 编程思想不同
  • 面向过程:是一种以过程为中心的编程思想。
  • 面向对象:是一类以对象为核心的编程思想。
  • 特点不同
  • 面向过程:主要分析出解决问题所需要的步骤,用函数把这些步骤一步一步实现,使用的时候一个一个依次调用即可。

面向对象中常用术语

  • 1、类: 可以理解是一个模板,通过它可以创建出无数个具体实例。
    比如,定义一个Cat类,通过它可以创建出无数个实例来代表各种不同特征的猫
    在这里插入图片描述
  • 2、对象: 类并不能直接使用,通过类创建出的实例(又称对象)才能使用,比如以上案例创建类对象cat。
  • 3、属性: 类中的所有变量称为属性。比如以上案例中类的变量有 颜色color 、体重 weight 、种类kind 、年龄age。
  • 4、方法: 类中的所有函数通常称为方法。不过,和函数所有不同的是,类方法至少要包含一个 self 参数,类方法无法单独使用,只能和类的对象一起使用,比如以上案例中的方法有eat()、action()、sleep(),创建对象后就可以直接调用类中的方法和属性。
  • 面向对象最重要的概念就是类和实例,要牢记类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法。

面向过程例子

# 学生的数据
stu_name = "小明"
stu_age = 18
stu_gender ="男"
# 学生的功能
print("学生信息》名字:%s 年龄%s 性别:%s"%(stu_name,stu_age,stu_gender))



# 课程的数据
course_name = "python"
course_period = "6月"
course_score = 100

print("课程信息》名字:%s 周期:%s 学分:%s"%(course_name,course_period,course_score))

在这里插入图片描述

面向对象实例

  • 面向对象:核心就是对象,对象就是将程序整合,对象是容器用来盛放数据与功能,优点:可扩展性强,缺点:编程复杂高,容易出现过度设计
  • 程序 = 数据 + 功能
  • 类:类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相似的数据与功能,那么该多个对象就属于同一种类。有了类的好处是:我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象都重复存一份,这样每个对象里只需存自己独有的数据即可,极大地节省了空间。所以,如果说对象是用来存放数据与功能的容器,那么类则是用来存放多个对象相同的数据与功能的容器。
  • 在程序中,必须要事先定义类,然后再调用类产生对象(调用类拿到的返回值就是对象)。产生对象的类与对象之间存在关联,这种关联指的是:对象可以访问到类中共有的数据与功能,所以类中的内容仍然是属于对象的,类只不过是一种节省空间、减少代码冗余的机制,面向对象编程最终的核心仍然是去使用对象。

先定义类 后调用类产生对象(调用类的过程又称作实例化)
在这里插入图片描述

class Student:
    def __init__(self,x,y,z):
        self.name = x
        self.age = y
        self.gender = z
print(Student.__dict__)# 类有两种属性:数据属性和函数属性,可以通过__dict__访问属性的值
print("-------------------------")
obj = Student("小明",18,"男")
print(obj.__dict__)
print(obj.name,obj.age,obj.gender)
print("-------------------------")
obj1 = Student("小红",17,"女")
print(obj1.name,obj1.age,obj1.gender)

在这里插入图片描述
增删改查

class Student:# 类的命名应该使用“驼峰体”
    def __init__(self,x,y,z):# 功能
        self.name = x
        self.age = y
        self.gender = z



obj = Student("小明",18,"男")
print(obj.name,obj.age,obj.gender)

print("______________查______________")
a = obj.name,obj.age # 查
print(a)
print("______________改______________")
b = obj.age = 20 # 改
print(b)
print(obj.name,obj.age,obj.gender)
print(obj.__dict__)
print("______________增______________")
c = obj.hobby = "篮球" # 增
print(obj.__dict__)
print("______________删______________")
del obj.hobby
print(obj.__dict__)
del obj.name
print(obj.__dict__)

在这里插入图片描述

class Student:# 类的命名应该使用“驼峰体”
    school = "清华大学" # 数据
    def __init__(self,x,y,z):# 功能
        self.name = x
        self.age = y
        self.gender = z

    def good(self):# 功能
        print('%s 是一个好孩子' % self.name)


print(Student.__dict__)
obj = Student("小明",18,"男")
print(Student.school,obj.name,obj.age,obj.gender)
Student.good(obj)

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值