Python基础知识总结笔记(五)面向对象编程

Python基础知识总结笔记(五)面向对象编程

  1. 一切皆对象
  2. 面向对象OOP
  3. 类的创建与实例化
  4. 类的内部结构
  5. 类的继承与多态
  6. 访问控制
  7. 魔法方法Magic Method
  8. 模块module
  9. 包package

1. 一切皆对象

▪︎关于类与对象操作的BIFs
■type() 返回对象类型
■ id(),查看对象id
■ dir(),查看对象下变量及函数
■ issubclass(),isinstance(), super(),类,实例,调父类 ■hasattr(),getattr(),setattr(),delattr()类属性操作
■ globals(),locals(),全局与局部的名称空间
■ import(),reload(),模块的导入与重载

2. 面向对象OOP

▪︎基本概念:
■ 面向过程与面向对象
▪︎OOP的核心思想:
■ 类:从近似的对象中抽象出类
■ 对象:然后再从类出实例化出对象

3. 类的创建与实例化

▪︎创建类
■ class关键字
■ 指定继承
■ 定义类的成员
▢数据成员
☐类变量
☐实例变量
▢方法成员
☐类方法
☐实例方法
▪︎实例化类

4. 类的内部结构

▪︎数据成员:[用于处理类及实例对象的相关数据]
■ 类变量:在类中且在函数体外,实例之间共享
■ 实例变量:定义在方法中,作用于当前实例的类
▪︎方法成员(在类中定义的函数叫方法) :
■ 类方法
▢定义时需要使用@classmethod装饰器,第一个参数为cls
■ 实例方法
▢绑定到实例的方法,第一个参数为self,
■ 静态方法[普通方法]
▢定义的时候使用@staticmethod装饰器。
▢静态方法没有参数限制,不需要实例参数self和类参数cls
▢静态法可以通过类名访问,也可以通过实例访问。

5. 类的继承与多态

▪︎继承
■ 创建一个类时可以从新开始,也可以从已经有的类继承下来
■ super()子调用父类的方法
▪︎多态
■ 因为类具有继承关系,子类可以向上转型被看做是父类的类型,比如
无论是战士还是快递员,都是人类。
■ 有了继承关系,子类可以继承父类的所有方法和属性,当然也可以重
载父类的成员函数及属性。
■ 例如,当子类(直升机)和父类(飞机)都存在相同的fly()方法时,子
类的fly()覆盖了父类的fly(),在运行时就总是会调用子类的fly()。
■ 这就是继承带来的多态。

6. 访问控制

▪︎访问控制
■ Python没有像其它语言有访问控制的关键字,例如 private、protected等等。Python通过命名约定来实 现的访问控制
■ 对模块级的控制,通过在标识符前加单下划线_ 实现。
■ 对类内部的属性及方法,通过在在标识符前加双 下划线__来实现的私有化
■ 类中两个双下划线包裹的属性或方法为特殊方法

7. 魔法方法Magic Method

▪︎魔术方法:
■ 魔法方法就是可以给你的类增加魔力的特殊方法,如 果你的对象实现(重载)了这些方法中的某一个,那 么这个方法就会在特殊的情况下被 Python 所调用, 你可以定义自己想要的行为,这些会自动发生。
■ 它们经常是两个下划线包围来命名的

8. 模块module

▪︎模块定义:
■ 一个.py文件
■ 包含了对象定义与语句
▪︎模块作用:
■ 用来从逻辑上组织代码
▪︎模块使用:
■ 搜索路径(标准模块,自定义与第三方模块)路径
▢搜索路径设置(修改sys.path(sys.path.append()),设置环境变量)
■ 导入方法

import test#作为模块空间导入
from ** import * #指定模块下具体的类,对象导入,并入当前空间  
from***import***#将模块下所有对象导入,并入当前空间

9. 包package

▪︎包定义:
■ 含有__init__.py文件夹被称为包, init.py文件用于标识当前文件夹是一个包。
(该文件可以为空,但必须有)
■ 包用于组织模块,通常把功能相近的模块进行再次封装成为包。
▪︎包的目录结构:
■ 模块
■ 子包
▢子包下的子包
▪︎包的安装,导入与访问
■ 包的安装(pip,conda)
■ 不同的导入方式(假设包名为test)

import test#导入__init__.py这个moduel。
from test import *#导入__init__.py这个moduel下所有对象导入到当前空间。
from test.test_level1.test_level2 import test_level2#导入的层次目录下的模块。 还是模块
发布了196 篇原创文章 · 获赞 246 · 访问量 43万+

猜你喜欢

转载自blog.csdn.net/qq_37486501/article/details/104417248