一、引言
学习python已有5个月了,小论文初步完成。虽然在学习之初,就听视频里的老师强调面向对象编程的重要性。但在实际用编程解决问题的过程中,面向过程可以明晰解决问题的思路,潜意识下就自然的使用面向过程解决问题了。不过,面向过程在模拟现实世界的人、物、事方面有缺陷,为了get到面向对象的精髓,实现用机器语言来模拟现实世界的静态属性与动态方法。因此,重新进行了梳理。
将从以下方面进行展开:
- 面向对象的特点
- 类的定义与调用
- 类的属性和方法的定义
- 类的继承
二、面向对象的特点
面向对象符合人类对客观世界的抽象与理解
- 生活中一切皆对象,python中一切皆对象。
- 一切对象皆有自己的内在属性 - 属性
- 一切对象皆有自己的行为 - 方法
我们可以把一类对象的公共特征抽象出来,创建通用的类,类是对象的载体。
面向对象编程将数据与操作方法(属性与方法)封装到对象中,组织代码与数据的方式更接近于人的思维,提高了编程效率。面向过程思维主要关注程序的逻辑流程,适合编写小规模的程序。面向对象编程关注对象之间的关系,是从设计者的角度来关注问题,适合编写大规模程序。但两者不是相互对立的,而是相辅相成的。面向对象离不开面向过程。因此,在碰到问题时,面向对象可以帮助我们从整体上、宏观上分析,在实现每一部分时,我们仍然可以通过面向过程去处理。
面向对象的思考方式:遇到复杂问题时,先从问题中找名词,然后确定这些名词哪些可以作为类,再确定类之间的关系,再根据问题需求确定每一个类的属性与方法。
三、类的定义与调用
1.类的定义
三要素:类名、属性、方法
- 类的命名——需要有实际意义;驼峰命名法(雷鸣单词首字母大写)
- 类的属性——相当于内部变量,def init(self,参数) # 初始化类属性
- 类的方法——相当于类内部定义的函数
"""类前空两行"""
# 定义一个简单的类
class Car():
"""模拟汽车"""
def __init__(self,brand,model,year):# __init__(self,[])构造函数 # self指当前的实例对象
"""初始化汽车属性"""
self.brand = brand # 品牌
self.model = model # 型号
self.year = year # 出厂年份
self.mileage = 0 # 里程碑数
def get_main_information(self): # self不能省
"""获取汽车主要信息"""
print("品牌:{},型号:{},出厂年份:{}"
.format(self.brand,self.model,self.year))
def get_all_mileage(self):
"""获取总里程数"""
return "行车总里程:{}公里".format(self.mileage)
"""类后空两行"""
2.类的调用
- 创建实例
- 访问属性
- 调用方法
# 实例的创建-实例化过程中,传入相应的参数
# 通过 类名(参数列表) 来调用构造函数__init__(),调用后将创建好的对象返回给相应的变量
my_new_car = Car("Audi","A6",2018)
# 访问属性
print(my_new_car.brand)
print(my_new_car.model)
print(my_new_car.year)
# 调用方法-实例名.方法名(必要的参数)
my_new_car.get_main_information()
s = my_new_car.get_all_mileage()
print(s)
- 修改属性
# 修改属性-先访问后修改
# 创建实例
my_old_car = Car("BYD","宋",2016)
# 先访问后修改
print(my_old_car.mileage)
my_old_car.mileage = 12000
print(my_old_car.mileage)
# 0、12000
# 通过方法修改属性
class Car():
"""模拟汽车"""
def __init__(self,brand,model,year):
"""初始化汽车属性"""
self.brand = brand # 品牌
self.model = model # 型号
self.year = year # 出厂年份
self.mileage = 0 # 里程碑数
def get_main_information(self): # self不能省
"""获取汽车主要信息"""
print("品牌:{},型号:{},出厂年份:{}"
.format(self.brand,self.model,self.year))
def get_all_mileage(self):
"""获取总里程数"""
return "行车总里程:{}公里".format(self.mileage)
def