1.面向对象编程–oop(object oriented programming)

面向过程–思考问题时,首先分析怎么按照步骤实现,然后将问题拆解成若干步骤,并一步步完成功能–怎么做

面向对象–关注的是设计思维,关注顶层设计,不考虑细节究竟如何实现(比如洗车,直接给洗车店,不用管)–给谁做

2.类和对象

–一个模板,模板中可以有多个函数,并且函数里实现一些功能(造汽车的图纸)----一组相同或相似特征【属性】和行为【方法】的一系列对象组合

组成部分:类名,属性(数据),方法
例:类名:人;属性:身高,体重;方法:吃饭,跑步

对象–根据模板创建的示例,通过实例对象可以执行类中的函数(用图纸造的汽车)----类的实例化

定义:

#定义类和对象
'''类结构--类名,属性,方法class 类名:属性--类里面定义的变量(类属性)方法
'''
class Person(object):#object可以省略#属性-特征name = 'jey'#类属性age = 22'''**实例属性:**定义在方法内使用self定义的属性'''def __init__(self):self.name = '小明'#实例属性,归实例方法所有pass#方法-行为def eat(self):print('我要恰饭啦')passdef run(self):print('跑起来!')pass'''对象创建【实例化】对象名 = 类名()
'''
lee = Person()
lee.eat()#调用类的方法
print("{}的年龄是{}".format(lee.name,lee.age))

3.实例方法
在类的内部,使用def关键字可以定义一个实例方法,不同的是,实例方法必须包含参数self[名字标识可以是其他的名字,只是标识占位],并且是第一个参数.
实例方法归类所有,可以通过类调用

4.init方法–初始化实例属性

class Person(object):#object可以省略'''# init -- 定义类时直接定义,(统一设定)其他实例就可以直接调用,不需要一一定义创建新对象时自动执行'''# def __init__(self):#     self.name = '小明'#     self.sex = '女'#     self.age = 20#     pass'''也可以通过传参数的方式灵活定义,通过传参的方法定义实例属性'''def __init__(self,name,age,sex):self.name = nameself.age = ageself.sex = sexpass#方法也可以传参,并且可以使用self实例属性def eat(self,food):print(self.name+'我要恰饭啦'+food)passdef run(self):print('跑起来!')pass#添加实例属性  python可以直接通过对象添加实例属性
#如过类里面同一定义过实例属性,也可以通过下列方式修改使用,但只限该对象
# xw = Person();
# xw.name = '小王'
# xw.sex = '男'
# print(xw.name,xw.sex)#xm = Person();
#print(xm.name)#直接传递参数定义实例属性
zp = Person('帐篷',20,'男')
print(zp.name,zp.age,zp.sex)zp.eat('苹果')

5.self参数
self和对象指向同一内存地址,可以认为self就是对象的引用。
在某个对象调用其方法时,python解释器会把该对象作为第一个参数传递给self,因此开发者只需要传递后面参数即可

class Person:def eat(self):#self只有在类中定义实例方法时才有意义,# 在调用时不必传入相应参数,而是由解释器自动去指向print("self=%s",id(self))#打印self的地址passpass#实例化一个对象
xw  = Person()
print('xw=%s',id(xw))#xw=%s 55746600
xw.eat()#self=%s 55746600#self和对象的地址是一样的,表示将对象作为self参数传递了进去

6.魔术方法
一些内置好的特定的方法,方法名为__xxx___,在特定操作时会被调用

#str方法
class Animal:def __init__(self,name,color):self.name = nameself.color = colorprint('定义实例属性')#定义一个str方法,就可以直接打印对象信息def __str__(self):return '%s是%s色的'%(self.name,self.color)#new方法--创建对象实例的方法,每调用一次,就会生成一个新的对象cls(class的缩写)#new方法是类中第一个使用的方法#至少有一个参数cls代表要实例化的类def __new__(cls, *args, **kwargs):print('创建一个方法')return  object.__new__(cls)#返回一个新的对象,要返回对象,才可以成功创建对象passdog = Animal('旺财','white')
#在类没有定义str时
#直接打印的话,打印的是对象的内存地址--<__main__.Animal object at 0x0353A028>#定义了str后,打印对象时就会按照str返回值的格式输出数据
#旺财是white色的
print(dog)

7.实例

双人对战:

#双人对战#属性
#name-姓名
#blood-血量#方法
#tong()--扣对手10点血
#kanren()--扣对手15点学
#chiyao()--回复自己10滴血
#__str__打印玩家状态import time#导入时间包,可以设定休眠时间
class Role:def __init__(self,name,hp):self.name = nameself.hp = hppassdef tong(self,enemy):enemy.hp-=10print('%s捅了%s一刀'%(self.name,enemy.name))passdef kanren(self,enemy):enemy.hp-=15print('%s砍了%s一刀'%(self.name,enemy.name))passdef chiyao(self):self.hp+=10print('%s吃了一口药'%(self.name))passdef __str__(self):return '%s还有%s血量'%(self.name,self.hp)ygc = Role('叶孤城',100)
xmcx = Role('西门吹雪',100)while True:if ygc.hp<=0 or xmcx.hp<=0:breakygc.tong(xmcx)ygc.kanren(xmcx)xmcx.chiyao()print(ygc)print(xmcx)print('*****************')time.sleep(1)#休眠2秒再执行print('游戏结束')

PYTHON学习笔记(六)-- 面向对象相关推荐

  1. Python学习笔记六——画小猪佩奇

    目录 Python学习笔记六--画小猪佩奇 画布 画笔 属性设置 操纵命令 运动命令 画笔控制命令 全局控制命令 其他命令 Python学习笔记六--画小猪佩奇 使用Python的turtle库可以绘 ...

  2. Python学习笔记(六)

    1. IO编程 1.1 文件读写 1.2 StringIO和BytesIO 1.3 操作文件和目录 1.4 序列化 2. 进程和线程 2.1 多进程 2.2 多线程 2.3 ThreadLocal 2 ...

  3. python学习笔记六 初识面向对象上(基础篇)

    python面向对象 面向对象编程(Object-Oriented Programming )介绍 对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,虽然大家都知道OOP的三大特性是继承. ...

  4. Python学习笔记:面向对象高级编程(完)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习笔记:面向对象高级编程(中下)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. Python学习笔记:面向对象高级编程(中上)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:面向对象高级编程(上)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记:面向对象编程(4)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. Python学习笔记:面向对象编程(3)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  10. Python学习笔记:面向对象编程(2)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 微软推出提点神器动态ReLU,可能是最好的ReLU改进
  2. windows10上运行linux,在Windows 10上原生运行Linux
  3. docker-compose.yaml的一些坑(趁我还记得赶快记下来)
  4. 2018牛客网暑期ACM多校训练营(第十场)J Rikka with Nickname(二分,字符串)
  5. datareader对象直接转化为int_Integer、new Integer() 和 int 比较的面试题
  6. python 检测直线 交点_Python+OpenCV图像处理——实现直线检测
  7. 防止sql拼接的Java方法_JAVA程序防止SQL注入的方法
  8. LOIC安全测试工具
  9. Android基于串口通讯笔记(USB,485协议,232协议)
  10. 基于SpringBoot的网页版进销存-2.0版本
  11. MacOS苹果电脑使用PPPOE接入网络办法
  12. Android检查更新下载安装
  13. CC2430 串口使用详解
  14. 《派派APP》实现方式、运营模式、盈利手段
  15. 双路服务器5100芯片组,华硕推AMD双路12核平台服务器主板
  16. 修复移动硬盘“文件或目录损坏且无法读取”错误
  17. pytest文档56-插件打包上传到 pypi 库
  18. 【云周刊】第130期:阿里研究院发布新网商五大预测,2020年将诞生第一个机器人网商?
  19. 以太坊DAO之区块链大会
  20. 只需1个操作,100M宽带变身500M,迅雷下载满速狂飙

热门文章

  1. 英语单词SQL数据库一千词带音标例句发音【安卓SQLite网页MySQL皆可用】
  2. QQ《穿越火线 》快速下载
  3. 【vs code中c++使用system(“pause”)暂停,该行标黄的原因及解决办法】
  4. 《UNIX 传奇》读书笔记
  5. 暗黑破坏神3计算机性能测试,RTX 3090显卡8K游戏测试演示 《暗黑3》稳定60帧运行...
  6. 【TCP实现文件传输 --文件上传和下载】
  7. 使用project2013编制项目计划:[1]基本步骤
  8. 移动端turn.js挖坑总结
  9. 【先楫HPM6750系列】RT-Thread SDIO驱动和文件系统
  10. 合工大-数字媒体与技术期末考试及题解