day11-面向对象1

面向对象

类和对象

纯万物皆对象

面向对象的思想

面向对象OOP:面向对象的编程
利用对象的思想解决问题

第一个纯面向对象的语言:small talk
比较出名的面向对象语言:JAVA
1+2=3
对于java就是简单地运算
对于small talk和python来说:对1这个对象运行+方法,参数是2,得到3这个对象

纯万物皆对象
面向过程:洗衣服---水管---螺丝---钢铁---玻璃---------洗衣机---洗衣服
面向对象:谁家有洗衣机------拿来用(不掏钱)
  • 现实世界中的对象
1. 有什么:属性
2. 能做什么:方法

小狗:
	属性:
		体重
		年龄
		四个腿
		速度
		颜色 #000000~#999999
		血统
		
	方法:
		能叫
		吃
		睡
		拆家
		掉毛
		讲笑话
		排泄

对象=属性+方法
  • 属性
1. 属性可以由小对象构成
2. 相对抽象的属性(抽象的内容,也是对象)
  • 方法
对象之间彼此调用
	1. 方法被别人调用
	2. 调用别人的方法
	3. 自己调用自己的方法

如何建立解题思路

# 现实世界
从北京到上海
1. 面向过程
		将过程细化,细化到不能再细化,任何情况全部都要考虑在内,所有方案都要实现
		打车去机场,安检,上飞机,找座位,关手机,系安全带,放饭,厕所,下飞机。
		(如果飞机出事儿了:降落伞,直接跳,救生衣,急救)
2. 面向对象的思路:
		只考虑对象
		使用东航白金卡特权---空姐、空少---下飞机
		如果出事儿了:等机长
		
		
		1. 选取对象:航空公司(航空公司负责飞机上的相关所有事物)
		2. 调用方法:交通运输、上飞机、下飞机......
  • 解决问题
1. 找到合适的对象
2. 调用合适的方法

涡轮洗衣机
滚筒洗衣机
搓衣板
手搓
硬泡

面向对象在计算机中的使用

核心:在计算机中模拟现实世界,从而解决现实世界的问题

下载峰值:10M每秒
上传速度:1M每秒

现实:
	1. 沟通
	2. 购物
	3. 吃饭
	4. 娱乐
计算机:
	1. QQ 微信 陌陌 钉钉
	2. 淘宝 京东 并夕夕 国美 苏宁易购 唯品会
	3. 美团 饿了么 百度外卖
	4. 原神 扫雷 慕课网 leetcode
  • 计算机中的对象
计算机中的对象是在内存中的一块存储空间,属性和方法都是该内存中的数据

学生对象:
现实中:
	学生名字:小明
	学生年龄:18
	学生的性别:男
	学生的学号:123
	学习的方法
python:
	name = '小明'
	age = 18
	gender = 'male'
	id = 123
	
	def learn():
		print('小明爱学习')


图书管理系统:
现实:
	书架、书、图书管理员
计算机:
	管理员对象、用户对象、数据库对象、图书对象
  • 小结
面向对象的思想,为生活,编程提供了优质的解题思路
		可以简化流程,让复杂的需求更加容易实现

面向对象的特点:
	1. 各司其职
	2. 弱耦合性:
		强耦合:对象之间关系紧密
		弱耦合:对象之间关系松散
		面向对象中,对象之间的耦合关系尽量弱化。
	3. 可重用性:
		一处实现,处处使用
		框架:Spring、Scrapy、Requests
	4. 可扩展性:
		在原有的功能上,增加额外功能
		手机:大哥大+BB机--->小灵通(和弦铃声)--->iphone3彩色大屏触屏---iphone4 3G
		AI人工智能芯片、AIN摄、全面屏、OLED、屏下指纹、面部识别、虹膜识别.....

1. 类是对象一个共性的抽象
2. 是客观对象在人类脑中的主观反应
3. 类是一个对象的模板
  • 编写一个类
类 = 属性+方法
语法:
	关键字:class  定义一个类

class 类名:   #首字母大写
	属性
	方法
  • 属性
1. 属性的分类
		1. 类属性
			1. 位置:直接定义在类中的属性
			2. 类创建的所有对象都有这些属性,并且属性值相同
			3. 类属性属于类
			4. 类属性一旦发生变化,则所有的对象也跟着变化
				牵一发而动全身
			5. 可以直接通过,类名.新属性=新值 创建类属性
			6. 类属性的作用范围:整个类
				根据当前类生成的所有对象
		2. 实例属性
			1. 属于实例对象的属性---称之为实例属性
			2. 创建在方法内部的属性是实例属性
					a:self.属性名=值
					b:直接通过,实例对象.新属性名=新值
			3. 实例属性属于实例对象,其他人不能使用
			4. 实例属性改变,不会影响其他实例对象,更不会影响类
			5. 实例属性如果要使用,必须创建实例对象
			6. 如果实例属性和类属性发生命名冲突,在当前实例对象的范围内,覆盖类属性
			7. 实例属性的作用范围:当前的实例对象
2. 实例:
	通过类创建的对象称为实例
  • 小结
1. 实例属性:
	各个实例各自拥有,相互之间不影响,也不会影响类
2. 类属性:
	全类共有,有且只有一份,属于类的属性,类属性更改,则影响所有的实例对象。

  • 方法
1. 结构
		1. 方法的声明
			def 方法名(self):
				内容
		2. 方法的实现:
			内容
		3. 返回值:和函数一样
2. 方法的使用
		通过.的方式
3. 通过实例对象调用方法
		自动传递self参数
4. 方法的使用,必须创建实例对象
		有个别情况,比如一个方法是类方法
5. 方法如果需要传递多个参数,则用逗号隔开
		函数中的参数类别,在方法中依然适用
  • self
1. self指代当前的实例对象(类)
2. 在通过实例对象调用方法时,python会自动的将当前的对象传递给self
		谁是当前对象:谁调用该方法,谁就是当前对象
3. self参数的目的:区分不同的实例对象
4. self仅仅是一个普通的变量而已
5. 自动传入当前对象,默认传递给第一个参数
	习惯上,第一个参数,写为self
  • 构造方法
1. __init__(self)
	初始化方法
2. 创建实例的时候,自动调用,不需要手动调用
3. 创建对象的时候,需要:类名(构造方法的参数)
4. init方法常常用于,在创建对象时初始化实例属性
	init方法就是私人订制
5. 一个类中,如果没有构造方法,在创建对象的时候,会调用父类的构造方法
	如果有构造方法,则调用该类的构造方法
	如果没有,从父类中调用
6. 构造方法的返回值,必须是None
class 用户:
    def __init__(self,name,number):
        self.name = name
        self.number = number

class 通讯录:
    def __init__(self):
        self.users = []
        
    def add_user(user):
        self.users.append(user)
        
t = 通讯录()
t.add_user(用户('胡承龙','1333333333'))

你可能感兴趣的:(实习,python)