2.1.0 Python初识面向对象
点击跳转Python笔记总目录
一、面向过程:
面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。
优点: 极大地降低了写成学的复杂度,只需要顺着执行的步骤,堆叠代码即可
缺点: 一套流水线或者流程就是用来解决一个问题,如果修改代码就都得改变
二、面向对象:上帝的思想
优点: 解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
缺点: 可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。
三、类:是具有相同特征的一类事物(人,狗,老虎)
对象/实例:具体的某一事物
实例化:类到对象的过程(实例=类名(参数1,参数2))
四、初始类和对象
类的定义:
class Person: ##class 类名:##注意类名后面不要括号 类体
复制代码
在python中,用变量表示特征,用函数表示技能,因而具有相同的特征和技能的一类事物就是‘类’, 对象则是这一类事物中具体的一个 类的两种作用: 属性引用和实例化 属性引用:
class Person:role = '中国人' ##类属性----静态属性def walk(self): ##这里的函数叫做方法-----动态属性##注意:self必须写print('person is walking ...')
print(Person.role) ##查看类属性
print(Person.walk) ##查看类方法 , 用类名去调用方法名,打印出来的是内存地址
复制代码
实例化:
class Person:role = '中国人'def __init__(self,name,sex):self.name=nameself.sex=sexdef walk(self):print('person is walking')p= Person('腿姐',21) ##实例化:类名(参数1,参数2) 类名()就等于在执行Person.__init__()
print(p.name) ##直接查看属性 对象名.属性名
print(p) ##返回的是一个对象
p.walk() ##调用方法 ,对象名.方法()
复制代码
对象的两种作用:查看属性和调用方法(咋上面的实例化中讲到)
五、关于self
self:在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给它起个别的名字,但是一般正常人都不会这么做,因为你改了别人就不认识了。
注意:def init(self): 这句话可以写也可以不写,只要有参数参进来的时候就必须得写
class Person:def eat(self):##这里的self必须得写pass
复制代码
六、特殊的类属性
class Person:role = '中国人'def __init__(self,name,sex):self.name=nameself.sex=sexdef walk(self):print('person is walking')p= Person('腿姐',21) ##实例化一个对象
print(Person.__name__,type(Person.__name__)) ##查看类的名字(这里的类名是字符串类型的)
print(Person.__dict__) ##查出的是一个字典,key为属性名,value为属性值
print(Person.__doc__)## 就是把注释显示出来
print(dir(Person)) ##查看类的方法,以列表的形式显示出来
print(Person.__module__) ##类定义所在的模块
print(Person.__class__)
print(isinstance(p,Person))##判断对象 是否是类的实例
复制代码
七、对象的相关知识
1.对象是关于类而实际存在的一个例子,即实例 2.对象/实例只有一种作用:属性引用
egg = Person('egon',10,1000)
print(egg.name)
print(egg.aggressivity)
print(egg.life_value) ##当然,你也可以引用一个方法,因为方法也是一个属性。
复制代码
八、面向对象小结
定义及调用的固定格式
class 类名:def __init__(self,参数1,参数2):self.对象的属性1 = 参数1self.对象的属性2 = 参数2def 方法名(self):passdef 方法名2(self):pass
复制代码
九、对象之间的交互
人狗大战小程序
class Person:def __init__(self,name,aggr,life_value):self.name=nameself.aggr=aggrself.life_value=life_valuedef attack(self,dog): ##人可以攻击狗dog.life_value=dog.life_value-self.aggr
class Dog:def __init__(self,name,aggr,life_value):self.name = nameself.aggr = aggrself.life_value = life_valuedef attack(self,egg): ##狗也可以攻击人egg.life_value = egg.life_value - self.aggr
egg = Person('egon',250,1000) ##示例化一个人呢
dog = Dog('乐乐',50,2000) ##实例化一个狗
print('狗没攻击前egon的生命值:',dog.life_value) ##没攻击前egon的生命值
egg.attack(dog) ##让egon去攻击狗乐乐
print('狗攻击后egon的生命值:',dog.life_value) ##攻击后egon的生命值print('egon没攻击前狗的生命值:',egg.life_value) ##没攻击前egon的生命值
dog.attack(egg) ##让狗去攻击egon
print('egon攻击后狗的生命值:',egg.life_value) ##攻击后egon的生命值
复制代码
十、类命名空间与对象,实例的命名空间
创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字成为类的属性 而类有两种属性:静态属性和动态属性
- 静态属性就是直接在类中定义的变量
- 动态属性就是定义在类中的方法
2.1.0 Python初识面向对象相关推荐
- Python初识面向对象
一.Python初识面向对象 1.1 封装 class Person:country='中国' #静态字段,可以直接调用def __init__(self,name,pwd): #Python类自带的 ...
- 16.1、python初识面向对象(1)
初识面向对象 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人 ...
- 网工学Python——初识面向对象
阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...
- Python面向对象—初识面向对象
文章目录 一.什么是面向对象的程序设计 二.初识面向对象 1 类的相关知识 1.1 类的声明 1.2 类的两种作用 1.2.1 属性引用(类名.属性) 1.2.2 实例化 2 对象的相关知识 3 类与 ...
- 轩小陌的Python笔记-day17 初识面向对象
第三模块 面向对象&网络编程&并发编程 第三模块包含的知识内容: 面向对象,Python中支持两种编程方式来编写代码,分别是:函数式编程.面向对象式编程. 函数式 # 定义函数,在函数 ...
- python之路——初识面向对象
阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...
- python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...
从0基础学习Python (Day19) 面向对象开发过程中的=>异常 什么是异常 当程序在运行过程中出现的一些错误,或者语法逻辑出现问题,解释器此时无法继续正常执行了,反而出现了一些错误的 ...
- Python进阶-----面向对象2.0(特有属性和方法与私有属性和方法)
目录 前言: 1.添加特有属性/方法 示例1:添加特有属性 示例2:添加特有方法 2.私有属性/方法 (1)私有化示例 (2) 私有化属性/方法可以在类的内部使用 (3)强制访问私有化属性/方法 (4 ...
- python人狗大战游戏_day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- Python初识与简介【开篇】
目录 1.扯淡 2.Python历史 3.Python简介 4.Python应用 5.为什么是python而不是其他语言? 6.Python的种类 7.Python的特点 8.Python设计哲学 9 ...
最新文章
- 20165315 第八周考试课下补做
- mysql报错 Incorrect table definition;there can be only one auto column and it must be defined as a key
- 开发人员需要熟知的常用Linux命令Version、Kernel查看
- 使用python game写一个贪吃蛇游戏
- 图片动画横条广告带上下滚动
- SpringBoot默认包扫描机制及@ComponentScan指定扫描路径详解
- Python工程师必看的面试问题与解答(中)
- 等宽分箱_数据分析师-数据挖掘如何分箱以及对箱子中的数据进行平滑处理
- GoogLeNetV1,V2,V3
- OOB模式下Exit事件的处理
- linux curl 显示请求耗时和dns解析
- 常用的分类与预测算法
- C#开发工控上位机编程 csdn_C#串口编程示例
- android icloud照片恢复软件,iCloud照片怎么恢复到手机 iCloud照片恢复到手机方法【详细步骤】...
- NPDP产品经理小知识-影响团队绩效的因素
- 空间几何-欧拉角、四元数、重投影误差
- 互联网快讯:瑞幸回应价格异常;极米H3S、极米Z6X Pro受用户青睐;知网回应被中科院停用
- 豆瓣爬虫(从剧名获取ID)
- LNK1104:无法打开文件 “.exe”
- ABR CQP CRF码率控制总结
热门文章
- druid Approximate Histograms
- vue-router配置
- 关于if...else语句的小注意
- 尚学堂--面向对象2
- 使用Crash工具查看一个TCP listen sock内存布局实例
- 转iOS深拷贝与浅拷贝 附NSSet讲解
- 打包.Cab时“x.inf contains DirIDs, which are not supported”
- 将一个对象转化为字符串形式的默认方法
- 2019.01.01洛谷 P4725/P4726 多项式对数/指数函数(牛顿迭代)
- 替换url中某个参数的值或是添加某个参数的方法(js 分页上下页可以使用)