前言
面向对象是一种编程思想,与面向过程相对应。
面向过程是分析解决问题所需的步骤,用函数实现每个步骤,最后从头到尾依次调用。
面向对象是把问题分派给多个人,让每个人完成自己应做的任务,最后选择合适的人和顺序来解决问题。
面向过程的优点是按步骤、逻辑清晰,但在复杂庞大的项目中效率低下。
面向对象增加了程序的可扩展性,但同时也使开发人员不易预知对象之间的交互结果。
面向对象包含继承、封装、多态三个特征。
1. 面向对象的基础——类
类是描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
定义一个类
class People(object):
People是自定义的类名,首字母大写
object是所有类默认继承的父类,可省略__new__(cls)
定义类时,默认加载new方法。
创建一个类对象的地址,并返回给实例对象__init__(self)
是初始化方法/构造函数,用于初始化实例对象的变量。
其中self指的是实例对象,设置self.name可在整个类中使用- 创建实例对象
a = People("张三", 20, "男")
a是自定义的People类的实例对象
class People:
# new方法,创建地址并返回给实例对象
def __new__(cls):
return super().__new__(cls)
# 初始化方法/构造函数,初始化数据属性
def __init__(self, name, age=None, gender=None):
self.name = name
self.age = age
self.gender = gender
def eat(self):
print(f"{self.name}吃饭")
# 创建实例对象
a = People("张三", 20, "男")
b = People("李四", 25, "女")
示例
要求:设计“老张开车去东北”
分析:面向对象是将一个问题分派给多个对象去完成。
-
首先确定对象:人、车、地点,创建三个类People、Car、Place
-
再确定每个对象的属性和任务:
人:姓名——开车
class People:
def __init__(self, name):
self.name = name
def drive(self, car, place):
print(f"{self.name}开车")
车:品牌/速度——行驶
class Car:
def __init__(self, brand, speed):
self.brand = brand
self.speed = speed
def move(self):
print(f"{self.name}行驶ing..."