面向对象
时间:2021-07-12
本文章向大家介绍面向对象,主要包括面向对象使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
面向对象
什么是面向对象,以及和面向过程的对比
面向过程:
面向过程其实是一种编程思想
优点:
复杂的问题简单化,流程化
缺点:
扩展性差,可维护性差
面向对象:
对象就是一个盛放数据和功能的容器,比函数整合程度高的一个容器
优点:
扩展性强
缺点:
简单的问题复杂化
类的定义和对象的产生
类:
一系列对象相似的数据和相似的功能的结合体
对象:
数据和功能的结合体
于现实中是先有对象后有类,但是程序中是现有类,然后调用类实例化产生对象
类的定义:
"""
class 类名():
pass
类名首字母一般是大写
"""
# 拿这个实现统计一个类被实例化多少次,来举例
class Student(): #定义类
count = 0
def __init__(self,name): # 定义类的__init__方法,私有数据,初始化方法
self.name = name
Student.count += 1
stu_obj1 = Student('lyh') # 调用类,实例化产生对象,
stu_obj2 = Student('lyh')
stu_obj1.__dict__ # 查看对象的名称空间
print(Student.count)
定义类发生的几件事:
1.调用类,运行类体代码,注意这里和函数的区别,函数体代码是函数定义阶段不运行,只在函数调用阶段运行,而类,在定义的时候就运行了类体代码
2.产生类体代码变量名的名称空间
3.把这个名称空间绑定给类名
调用类发生的事:
1.产生一个空对象,并且把该空对象当初第一个参数传递
属性查找方法
class Student():
school = 'ShangHaiOldbay'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
self.courses = []
def choose_course(self, course_name):
self.courses.append(course_name)
stu1 = Student('egon', 19, 'male')
stu2 = Student('jason', 20, 'male')
print(Student.school) # 类的属性查找,用类名点
Student.school = 'xxxx' # 类的属性修改
Student.choose_course()
del Student.school # 类的属性删除
Student.xxx = 'xxxx' # 类的属性添加
stu1.school # 对象的属性查找
stu1.school = 'xxxx' # 对象的属性修改
stu1.name
stu1.xxx = 'xxxx' # 对象的属性添加
del stu1.xxx # 对象的属性删除
'''
类中的属性是给所有对象的,类中的方法是给对象用的,并且会把对象自己当作第一个参数
类属性改变,它实例化的对象全都会变,,但是对象自己变了只影响自己,也就是对象只能自己玩
'''
原文地址:https://www.cnblogs.com/lyh-cur/p/15002055.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- springboot消息之@RabbitListener和@EnableRabbit
- c++实例之通讯录管理系统之显示菜单和退出功能(一)
- c++实例之通讯录管理系统之添加联系人功能(二)
- c++实例之通讯录管理系统之显示联系人功能(三)
- c++实例之通讯录管理系统之删除联系人功能(四)
- springboot检索之Elasticsearch简介
- c++实例之通讯录管理系统之查找联系人功能(五)
- 【python-leetcode424-滑动窗口法】替换后的最长重复字符
- c++实例之通讯录管理系统之修改联系人功能(六)
- 解决arxiv.org打开pdf缓慢问题
- c++实例之通讯录管理系统之清空联系人功能(七)
- springboot任务之定时任务
- springboot检索之整合elasticsearch并使用jest操作
- springboot任务之邮件任务
- springboot安全之整合spring security实现(只有登录才有权限、不同用户显示不同内容、记住我)