13.面向对象
AI-摘要
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
13.面向对象
Pupper一、 类
Python中 一切对象都有各自的类。
Python 中,除了内置的类之外,我们也可以自定义类。
使用
class
关键字 定义一个类。1
2
3
4
5
6
7class BenzCar:
brand = '奔驰' # 品牌属性
country = '德国' # 产地属性
def pressHorn():
print('嘟嘟~~~~~~')类 和 变量 的 命名规则一样,类名的 首字母大写 。
brand 和 country 都是这个类的
属性
,也叫类属性
类属性 的调用:
1
print(BenzCar.brand)
pressHorn 是类的方法 ,也叫
类方法
@staticmethod
则表示 该方法是这个类的静态方法
静态方法 的调用:
1
BenzCar.pressHorn()
二、 实例
1. 类和实例的关系
某种对象的类型 称为 类 ,他描述了这个类型的实例的 公共特征。
具体 的对象 称为 实例 。
实例的产生(在类名后面加上
()
):1
car1 = BenzCar()
- car1 变量就对应一个 BenzCar 类型 的实例对象,具有 BenzCar 类 的一切属性和方法。
2. 实例属性
类里面的属性都是 类属性
, 里面的方法都是 静态方法
。
实例属性 :每个实例独有的属性。
实例属性 通常定义在类的 初始化方法
__init__
里面。- 解释器在创建好实例后,会立即执行
__init__
方法 。 - 调用
__init__
方法时,就将实例对象 传递给 self 参数。 - self 参数变量 指向的 就是 实例对象 本身 。
1
2
3
4
5
6
7
8
9
10
11
12class BenzCar:
brand = '奔驰'
country = '德国'
def pressHorn():
print('嘟嘟~~~~~~')
# 初始化方法, 注意前后各有两个下划线
def __init__(self):
self.color = 'red' # 颜色
self.engineSN = '837873398' # 发动机编号- 解释器在创建好实例后,会立即执行
类的静态方法在定义是,需要加上
@staticmethod
的修饰- 类的 实例方法 不需要任何修饰
通常 类的实例方法,都是要 访问类的实例属性的。(包括:创建、修改、删除 类的实例属性)
静态方法 不能访问 实例属性
如果 实例属性名称 和 静态属性名称 重复了
通过 类实例 访问该属性,访问的是 实例属性
通过 类名 访问该属性,访问的是 类属性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15class Car:
brand = '奔驰'
name = 'Car'
def __init__(self):
# 可以通过实例访问到类属性
print(self.brand)
# 定义实例属性和类属性重名
self.name = 'benz car'
c1 = Car()
print(f'通过实例名访问name:{c1.name}') # benz car
print(f'通过类名 访问name:{Car.name}') # Car
三、 类之间的关系
1. 继承关系
类之间可能存在 包含关系 ,当一个类 包含 在另一个类中时,我们将 包含的类 叫做 父类(基类) ,将被包含的类叫做 子类(派生类) 。
定义子类的时候必须指定他的父类
1 | # 父类 |
子类 自动拥有 父类的一切 属性 和 方法
子类 调用 父类的 初始化方法
- 子类初始化方法 和 父类的初始化 相同时,需要 显式的调用 父类的初始化方法,需要传入相应的参数。
1 | def __init__(self,color,engineSN,weight): |
- 调用 父类的 初始化方法,除了使用父类名称,还可以使用
super() 函数
super
不仅可以调用 父类的初始化方法,也可以调用 父类的其他方法
1 | def __init__(self,color,engineSN,weight): |
如果 子类 没有自己的初始化方法, 实例化子类时,解释器会自动调用 父类的初始化方法。
1 | class Rect: |
2. 类的组合关系
组合关系:一个类的实例属性中包含另一个类的实例
1 | # 轮胎 |
奔驰汽车对象包含 4个两台对象 和 Tire 对象
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果