Python之面向对象之初识面向对象
初始面向对象
一、面向过程:面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。
优点:极大地降低了写成学的复杂度,只需要顺着执行的步骤,堆叠代码即可
缺点:一套流水线或者流程就是用来解决一个问题,如果修改代码就都得改变
二、面向对象:上帝的思想
优点:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。
三、类:是具有相同特征的一类事物(人,狗,老虎)
对象/实例:具体的某一事物
实例化:类到对象的过程(实例=类名(参数1,参数2))
四、初始类和对象
类的定义:class Person: #class 类名:注意类名后面不要括号
类体
在python中,用变量表示特征,用函数表示技能,因而具有相同的特征和技能的一类事物就是‘类’,
对象则是这一类事物中具体的一个
类的两种作用:属性引用和实例化
1 class Person:
2 role = '中国人' #类属性----静态属性
3 def walk(self): #这里的函数叫做方法-----动态属性
4 #注意:self必须写
5 print('person is walking ...')
6 print(Person.role) #查看类属性
7 print(Person.walk) #查看类方法 , 用类名去调用方法名,打印出来的是内存地址
属性引用
1 class Person:
2 role = '中国人'
3 def __init__(self,name,sex):
4 self.name=name
5 self.sex=sex
6 def walk(self):
7 print('person is walking')
8
9 hy = Person('haiyan',21) #实例化:类名(参数1,参数2) 类名()就等于在执行Person.__init__()
10 print(hy.name) #直接查看属性 对象名.属性名
11 print(hy) #返回的是一个对象
12 hy.walk() #调用方法 ,对象名.方法()
实例化
对象的两种作用:查看属性和调用方法(咋上面的实例化中讲到)
五、关于self
self:在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给它起个别的名字,但是一般正常人都不会这么做,因为你改了别人就不认识了。
注意:def __init__(self): 这句话可以写也可以不写,只要有参数参进来的时候就必须得写
def 方法名(self):这里的self必须得写
六、特殊的类属性
1 print(Person.__name__,type(Person.__name__)) #查看类的名字(这里的类名是字符串类型的)
2 print(Person.__dict__) #查出的是一个字典,key为属性名,value为属性值
3 print(Person.__doc__)# 就是把注释显示出来
4 print(dir(Person)) #查看类的方法,以列表的形式显示出来
5 print(Person.__module__) #类定义所在的模块
6 print(Person.__class__)
7 print(isinstance(hy,Person))#判断对象 是否是类的实例
七、对象的相关知识
1.对象是关于类而实际存在的一个例子,即实例
2.对象/实例只有一种作用:属性引用
|
1
2
3
4
|
egg = Person('egon',10,1000)print(egg.name)print(egg.aggressivity)print(egg.life_value)<br>当然,你也可以引用一个方法,因为方法也是一个属性。 |
八、面向对象小结
定义及调用的固定格式
1 class 类名:
2 def __init__(self,参数1,参数2):
3 self.对象的属性1 = 参数1
4 self.对象的属性2 = 参数2
5
6 def 方法名(self):pass
7
8 def 方法名2(self):pass
9
10 对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西
11 #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法
12 #括号里传参数,参数不需要传self,其他与init中的形参一一对应
13 #结果返回一个对象
14 对象名.对象的属性1 #查看对象的属性,直接用 对象名.属性名 即可
15 对象名.方法名() #调用类中的方法,直接用 对象名.方法名() 即可
16
17 小结
九、对象之间的交互
1 class Person:
2 def __init__(self,name,aggr,life_value):
3 self.name=name
4 self.aggr=aggr
5 self.life_value=life_value
6 def attack(self,dog): #人可以攻击狗
7 dog.life_value=dog.life_value-self.aggr
8 class Dog:
9 def __init__(self,name,aggr,life_value):
10 self.name = name
11 self.aggr = aggr
12 self.life_value = life_value
13
14 def attack(self,egg): #狗也可以攻击人
15 egg.life_value = egg.life_value - self.aggr
16 egg = Person('egon',250,1000)
17 dog = Dog('乐乐',50,2000)
18 print('狗没攻击前egon的生命值:',dog.life_value) #没攻击前egon的生命值
19 egg.attack(dog) #让egon去攻击狗乐乐
20 print('狗攻击后egon的生命值:',dog.life_value) #攻击后egon的生命值
21
22
23 print('egon没攻击前狗的生命值:',egg.life_value) #没攻击前egon的生命值
24 dog.attack(egg) #让狗去攻击egon
25 print('egon攻击后狗的生命值:',egg.life_value) #攻击后egon的生命值
人狗大战小程序
十、类命名空间与对象,实例的命名空间
创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字成为类的属性
而类有两种属性:静态属性和动态属性
- 静态属性就是直接在类中定义的变量
- 动态属性就是定义在类中的方法
Python之面向对象之初识面向对象的更多相关文章
- python学习日记(初识面向对象)
面向过程 VS 面向对象 面向过程 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统 ...
- python学习笔记六 初识面向对象上(基础篇)
python面向对象 面向对象编程(Object-Oriented Programming )介绍 对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,虽然大家都知道OOP的三大特性 ...
- python 面向对象(一)初识面向对象
##################################总结#################### 1. 面向过程:一切以事物的发展流程为中心 面向对象:一切以对象为中心,一切皆为对向, ...
- 巨蟒python全栈开发-第16天 核能来袭-初识面向对象
一.今日内容总览(上帝视角,大象自己进冰箱,控制时机) #转换思想(从面向过程到面向对象) 1.初识面向对象 面向过程: 一切以事物的发展流程为中心. 面向对象: 一切以对象为中心,一切皆为对象,具体 ...
- python - 初识面向对象
1.初识面向对象 面向过程:一切以事务的发展流程为中心 优点:负责的问题流程化,编写相对简单 缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...
- python之路--初识面向对象
一 . 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大 ...
- python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)
一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 class Dog: def __init__(self, name, kind, hp, ad): self.name = ...
- python基础(23):面向过程与面向对象的优劣、初识面向对象
1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...
- Python初识面向对象
初识面向对象 面向过程 VS 面向对象 面向过程的圣墟设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西 优点是:极大的降低 ...
随机推荐
- apache禁止php解析--安全
#禁止解析php <Directory "/data/www/data/"> php_admin_flag engine off <filesmatch &quo ...
- 阶段3 2.Spring_08.面向切面编程 AOP_2 spring中的aop术语和细节
基于接口的动态代理要求,要去被代理对象最少实现一个接口 基于子类的动态代理没有实现接口的要求.但是要求我们的被代理类不能是最终类 在Spring中可以选择基于接口还是子类的动态代理 术语 大白话.业务 ...
- Web03_JavaScript
案例一:使用JS完成注册页面表单校验 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- 深入理解java:4.2. 框架编程之Spring框架的设计理念
什么是Spring呢? Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. Spring优点 简单了解Spring之后,我们看一下Spri ...
- Django 调用支付宝接口
目录 一 支付宝接口 二 视图函数 支付宝支付 正式环境:用营业执照,申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appD ...
- Akka系列(四):Akka中的共享内存模型
前言...... 通过前几篇的学习,相信大家对Akka应该有所了解了,都说解决并发哪家强,JVM上面找Akka,那么Akka到底在解决并发问题上帮我们做了什么呢? 共享内存 众所周知,在处理并发问题上 ...
- excel常用公式--计算统计类
Count/Countif/Countifs:条件计数. 注:count只能对数值进行统计 sum/sumif/sumifs:条件求和. Average/Averageifs: 返回参数的平均值 ...
- excel常用公式--关联匹配类
index: 根据位置返回单元格的值. match: 根据单元格的值返回位置. index+match替代vlookup rank:返回一列数字的数字排位.数字的排位是其相对于列表中其他值的大小.
- CAN 总线数据收发驱动
目标:使用链表实现 CAN 总线数据的分帧发送和分帧数据的接收,同时将接收到的多帧数据合并成一个完整的数据包. 使用场合:当一个CAN总线网络上有多个端口对同一个端口发送分帧数据,且来自不同端口的分帧 ...
- Spring(九)--通知
Spring之Advice通知 Spring原生的经典模式 实现AOPadvice :通知 前置通知:在目标方法执行之前执行!不能改变方法的执行流程和结果! 实现MethodB ...