Python面向对象高级
面向对象的三大特性
1概念
| 封装 | 将属性和方法书写到类的里面的操作即为封装,封装可以为属性和方法添加私有权限。 |
| 继承 | 子类默认继承父类的所有属性和方法,与此同时子类也可以重写父类属性和方法。 |
| 多态 | 多态是同一类事物具有的多种形态。不同的对象调用同一个接口(方法),表现出不同的状态,称为多态。 |
2 Python中的封装
2.1私有属性和私有方法
1. 在Python中,可以为属性和方法设置私有权限。设置私有属性和方法的方式:在属性或方法名前面加上 __(双下划线)
2. 私有属性和方法使用规则:
-
只能在类的内部使用,不能在类的外部使用
-
如果想在类的外部使用,需要通过公共接口
3. 获取与设置私有属性值
在Python中,一般定义函数名 get_xx 用来获取私有属性,定义 set_xx 用来修改私有属性值。
4. 封装的意义
4.1 私有属性的意义:明确的区分内外,控制外部对隐藏的属性的操作行为,防止外部随意修改内部重要数据。
4.2 私有方法的意义:简化调用代码,降低程序复杂度,将复杂的内部逻辑隐藏起来,对外只提供一个简单的方法。
3 Python中的继承
3.1概念
简单来说,如果一个类B使用了另一个类A的成员(属性和方法),我们就可以说B类继承了A类,这也体现了OOP中代码重用的特性! -------- 在Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类。
3.2 继承的基本语法
# 父类A
class A(object):
pass
# 子类B
class B(A):
pass
1. 单继承
一个类只能继承自一个其他的类,不能继承多个类。这个类会具有父类的属性和方法。
例子:
# 父类A
class A(object):
pass
# 子类B
class B(A):
pass
2. 重写父类属性和方法
重写也叫作覆盖,就是当子类成员与父类成员名字相同的时候,从父类继承下来的成员会重新定义。此时,通过子类实例化出来的对象访问相关成员的时候,真正起作用的是子类中定义的成员!
2-1 super():调用父类属性或方法
Python 中调用父类构造方法有两种正确写法:
# 写法一:使用父类名(需要手动传 self)
Animal.__init__(self, name) # ✅ 第一个参数必须是 self
# 写法二:使用 super()(推荐,自动处理 self)
super().__init__(name) # ✅ 更简洁,而且支持多继承
3.多继承
一个类同时继承了多个父类,并且同时具有所有父类的属性和方法。例如:孩子会继承父亲和母亲的方法。
例子:
class Father(object):
pass
class Mother(object):
pass
class Child(Father, Mother): # 多继承
pass
可以通过类名.__mro__或类名.mro()获得"类的层次结构",方法解析顺序也是按照这个结构查找的。
4Python中的多态
4.1概念
多态指的是一类事物有多种形态。
标准定义:多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果。
Python中的多态就是指 → 同一个函数,随着传入子类对象的不同,可以实现不同的功能!
1.多态的实现步骤
1-1 有继承:定义父类、定义子类,子类继承父类
1-2 函数重写:子类重写父类的函数
1-3 父类引用指向子类对象:子类对象传给父类引用
2.多态的好处
在不改变框架代码的情况下,通过多态语法轻松实现模块和模块之间的解耦合,实现软件系统的可扩展
5 面向对象的其他特性
5.1实例属性(对象属性)
属性是类或对象中的属性,都属于属性。
| 要点 | 说明 |
|---|---|
| 定义位置 | __init__ 方法里,用 self.属性名 定义 |
| 归属 | 属于每个对象(实例),不同对象各有一份 |
| 访问方式 | 只能通过对象访问:对象.属性名 |
| 作用 | 存储每个对象独有的数据 |
5.2 类属性
指的就是类所拥有的属性,它被共享于整个类中(即所有实例都可以直接调用)。
访问方式:
-
对象名.类属性名
-
类名.类属性名 → 推荐使用
5.3 类方法
类方法就是针对类定义的方法,在类方法中可以直接访问类属性或者调用其他类方法。
基本语法:
-
类方法需要用修饰器
@classmethod来标识 -
类方法的第一个参数应该是
cls -
有哪一个类调用的方法,方法内的
cls就是哪一个类的引用 -
这个参数和实例方法的第一个参数
self类似 -
通过
类名.调用类方法,调用时不需要传递cls参数 -
在方法内部:通过
cls.访问类属性,通过cls.调用其他类方法
更多推荐


所有评论(0)