前言
面向对象编程:Object Oriented Programming,简称OOP,是一种程序设计思想。
需要注意的是,与之对应的是面向过程编程思想。实际上,能够使用面向对象编程思想实现的程序,也都能通过面向过程完成。只是看哪种思想更适合当前开发需求
文章图片
面向过程与面向对象区别
面向过程:根据业务逻辑从上到下写代码
面向对象:将数据与函数绑定到一起,进行封装。减少重复代码的重写过程
初识面向对象
- 面向对象概念及术语
-
- 类与对象介绍
-
- 类中的成员
面向对象概念及术语
概念 | 描述 |
---|---|
类(Class) | 用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。其中的对象被称作类的实例。 |
对象 | 也称实例。通过类定义的初始化方法,赋予具体的值,成为一个"有血有肉的实体"。 |
实例化 | 创建类的实例的过程或操作。 |
实例变量 | 定义在实例中的变量,只作用于当前实例。 |
类变量 | 类变量是所有实例公有的变量。类变量定义在类中,但在方法体之外。 |
数据成员 | 类变量、实例变量、方法、类方法、静态方法和属性等的统称。 |
方法 | 类中定义的函数 |
静态方法 | 类方法是将类本身作为对象进行操作的方法。 |
方法重写 | 如果从父类继承的方法不能满足子类的需求,可以对父类的方法进行改写,这个过程也称override。 |
封装 | 将内部实现包裹起来,对外透明,提供api接口进行调用的机制 |
继承 | 即一个派生类(derived class)继承父类(base class)的变量和方法。 |
多态 | 根据对象类型的不同以不同的方式进行处理。 |
类是抽象的概念,仅仅是一个模板。用于,描述具有相同属性和方法的对象的集合。比如"编程语言"是一个类
类的构成
类由3个部分构成类的定义
类的名称:类名
类的属性:一组数据
类的方法:允许对类进行操作的方法
python中使用class关键字来定义类
类名通常采用驼峰式命名方式,尽量让字面意思体现出类的作用
class 类名:对象(实例)
某一个具体事物的存在,在现实世界中可以是看得见摸得着的。比如"python"就是一个对象
创建对象(实例化对象)
python中,可以根据已经定义的类去创建一个个对象
创建对象的格式:
对象名 = 类名()
class LagicStudents(object):
def study(self, language):# 实例方法有一个参数self,指的是实例对象
print(language)l1 = LagicStudents()
l2 = LagicStudents()
通过一个类可以创建无数个对象,每个对象在内存中都会开辟新的空间
?调用类中的实例化对象
①使用 对象名.方法名(参数) 调用的方式,不需要传递self。
②使用 类名.方法名(self, 参数) 的方式,不会自动给 self 传参,需要手动的指定self。
class LagicStudents(object):
def study(self, language):# 实例方法有一个参数self,指的是实例对象
print(language)l1 = LagicStudents()
# 通过对象名.方法名(参数)调用
l1.study('python')# 通过类名.方法名(self,参数),需要手动传参
LagicStudents.study(l1, 'python')
举个栗子
?创建类:学生类
?创建对象:居然
?在类中定义方法输出:居然学习python
class LogicStudents:
def study_python(self):
print("居然学习python")jr = LogicStudents()# 实例化的过程
jr.study_python()# 通过对象.方法()去调用类中的方法
类与对象的关系
?类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。
?使用同一个类,能够创建出很多对象。
?类中定义了什么属性和方法,对象中就有什么属性和方法。
?不同对象对应的属性值也会不同。
总结:
?创建对象的过程就是实例化
?通过对象.方法()调用类中的方法
?self参数
self表示当前对象类中的成员
self并不是一个关键字,其实可以是任意的标识符,为了表达代表的是当前对象自己,习惯使用self表示
调用实例函数的时候,self不需要手动传参,系统会自动传递当前的对象
哪个对象调用了方法,方法里的self指的就是谁。
通过 self.属性名 可以访问到这个对象的属性。
通过 self.方法名() 可以调用这个对象的方法。
类属性
?访问的两种方法
①通过类名.属性名访问
②通过实例对象.属性名访问
class LogicStudents():
students_num = 100# 类属性sn = LogicStudents()print(LogicStudents.students_num)# 通过类名.类属性访问
print(sn.students_num)# 通过实例对象.类属性访问
【python|【python基础教程】面向对象初识】以上就是python基础教程之面向对象初识,如果有改进的建议欢迎在评论区或者私信留言奥~
人生苦短,我用python
文章图片
推荐阅读
- python|有趣好玩的python编程网站
- python|python安装编译环境详解(Windows)
- python爬虫|【python爬虫教程】请求模块urllib的基本使用
- python|【python基础教程】python常见的运算符及用法
- python|比收费还好用的python免费学习网站(精选)
- python爬虫|爬虫基础知识(web前端,请求模块urllib,重构user_agent)
- python|26岁,转行Python,是这辈子最成功的一件事......
- 编程语言|现代编程语言(zig)
- python_flask|flask通过SqlAlchemy操作数据库-增删改查实例(4-进阶篇)