课堂笔记随记面向对象v0_第1页
课堂笔记随记面向对象v0_第2页
课堂笔记随记面向对象v0_第3页
课堂笔记随记面向对象v0_第4页
课堂笔记随记面向对象v0_第5页
已阅读5页,还剩7页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、r(-lesson-21+22-面象)3-用 sicmethod 修饰 只能修饰紧跟的那一个2-实例方法:知识点汇总1-面象的引入:1-先找出相应的对象2-把这些涉及的对象的关系进行组网2-类/实例1-类:1-现实不存在-抽象的概念-人类-鸟类2-一类具有相同特征的事物的统称!2-类里面有1-静态-属性(特征)-变量2-动态-方法(行为)-函数实例-也叫 对象在这个类里面实际存在的类是实例的抽象化概念3-实例是类的具体实例化体现4-实例化操作:1-类里面的变量-属性2-类里面的函数-方法3-创建实例 t1 = Tiger()5-静态属性和实例属性1-静态属性:1-也叫类属性2-它属于整个类的3

2、-用法:1-类.属性2-实例.属性2-实例属性:1-这个属性是 那个实例的,不属于整个类-其他实例不能共享定义在 初始化方法 init 里一般在创建实例的时候就给定只要创建实例-def init (self):初始化方法肯定会调用self 只是代表词,并不是关键字-可以替换,但不建议替换!不能缺省6-id(self)7-实例化属性-只能实例.属性8- self 这个实例的本身6-方法:1-静态方法1-属于整个类2-类可以直接调用,不需要实例化 -类.方法 / 实例.方法8-时间处理:1- import timetime.time()-是 s 秒从 1970 算起9-继承1-继承关系可以是多个父

3、类2-重写-在父类跟子类之间的一个多态的体现!3-在重写情况下,调用父类的方法super(SouTiger,s1).roar()super(子类类名,子类的实例名).roar()4- name私有属性思路:1- 类:1- 特征:术语:属性 本质是:变量2- 行为(技能),术语:方法本质是:函数1- 实例方法:这个方法跟具体的实例有关:这个方法里面有没有涉及到实例属性:有的话实例方法没有的话-静态方法2- 静态方法:整个类的所有的实例这个方法都一样的2-分解:1- 找出所有的对象(类)1- 房间2-:1- 特征-属性:1- 体重-大家可能不一样的特征-实例属性2静态属性-都一样2- 行为:1-

4、吃2- 叫3- 羊2- 关系组网-逻辑#1- 定义类:抽象的概念rand(0,2)-取 0 1 2 闭区间1-有 self2- 实例.方法7-取随机数from random import randself.weight -= 5def feed(self,food):if food = 肉:self.weight += 10pr(恭喜,喂食正确,体重增加 10 斤)else:self.weight -= 10pr(抱歉,喂食错误,体重减少 10 斤)#静态方法-所有实例都一样sicmethoddef sic_roar():pass#继承-业务扩展-需要另一个类-也是-华南虎class Sout

5、hTiger(Tiger):def init (self,inWeight):Tiger. init (self,inWeight)pr(子类的 init)age = 10s1 = SouthTiger(100)pr(s1.nickName) pr(s1.age)class Tiger:#属性-在类里面的一个变量而已nickName = #静态属性-属于整个类的所有实例#想法:我希望在创建实例对象的时候 就可以设置这个实例属性-t1 = Tiger()def init (self,inWeight):#初始化方法-会自动运行#self-自身 会自动传入,不需要人为来,是什么?-self.wei

6、ght = inWeightpr(Tigerinit)#实例方法-def roar(self):pr(我是-wow!,体重减 5 斤)# pr(curTime)#s-取相对时间差# pr(rand(0,1)#0 1 2 # #初始化# roomList = #元素-房间实例# for one in range(1,11):#if rand(0,1) = 1:#ani = Tiger(200)#else:#ani = Sheep()#room = Room(one,ani)#roomList.append(room)# # # import time# curTime = time.time()

7、# from random import rand#随机数# #2- 创建一只-t1-实例# t1 = Tiger(100)# pr(t1.weight)# t1.roar()# t1.feed(草)# pr(t1.weight)# class Sheep:#pass# class Room:#房间类?-属性:、动物-?静态/实例- 实例属性#def init (self,inNum,inAnimal): #self.num = inNum#self.animal = inAnimal# # r1 = Room(1,Tiger(100)# pr(t1.nickName)# Tiger.nick

8、Name = x#修改静态属性# while True:#获取当前时间#if 当前时间- 开始时间 120:#break#继承:业务需求-扩展节省重复代码量#举例:松勤商城:面向角度分析VIP 会员-入门价 200 元-前面的福利属性:9.5 折 生日礼品:买商品 返回红包 2 元服务升级:一些老会员符合要求的升级 为 SVIP-5 年以上+500 元vip1 = VIP()vip1.shop()SVIP 会员福利:VIP 有的,也同样有,还有:白条 随你花金额服务:买商品的行为:返回红包 2 元+包邮技术面:SVIP 可以继承 VIP 类svip1 = SVIP()svip1.shop()-

9、需要重写方法继承:如果子类没有 init 方自动调用父类的 init 在父类的实例属性不够用的时候,子类自己有 init 方法,不会自动调用,就意味不会继承!如果话需要继承,手动调用方法重写:是多态一种体现修改:Tiger.nickName = 其他值# t1 = Tiger(100) # pr (t1.weight) # t2 = Tiger(200)# pr(t2.weight)# # pr(t1)# class Tiger:#def roar(self):#pr(父类-Tiger-的实例方法)# # pr(t1.nickName)#1、实例.属性 2、类.属性-pr(Tiger.nick

10、Name)#self.weight = inWeight# t1.weight = 100 t2.weight = 200#self-本身 谁用就是谁自己#def create(self,inAge):#必须自己调用才可以有 age 属性#self.age = inAge# #创建实例-使用 t1 变量,方便后续使用实例对象 t1# # t1 = Tiger()# pr(self,-我被执行了,inWeight)一个方法在父类和子类有不同的操作什么时候使用重写:父类有一个方法 a ,但是子类去继承,发现 a 方法不满足子类,为了保持整体一个模式,会重写这个方法,适合子类#1- 定义类# cla

11、ss Tiger:#1- 静态属性:这个特征属于整个类所有的实例-大家一样的特征#nickName = #2- 大家有些特征不是一样的实例属性:每一个实例这个特征可以不一样#def init (self,inWeight):#初始化方法-只要创建实例,这个方自动调用#sicmethod#defl():#pr(父类 Tiger-的静态方法) # class Sheep:#def roar(self):#pr(父类-Sheep-的实例方法) #sicmethod#defl():pr(父类-Sheep-的静态方法)# class SouTiger(Tiger,Sheep): #def roar(se

12、lf):#pr(子类的实例方法) #sicmethod#defl():#pr(子类的静态方法)# super(SouTiger,s1).l()# super(Tiger,s1).l()# #那么要调用第 2 个父类的方法-super(你要调用的那个父类的前一个父类-类名,s1).roar()# #1- 调用第 2 个父类的实例方法# super(Tiger,s1).roar()# #2-调用第 2 个父类的静态方法# super(Tiger,s1).l()# 普通用户-父类-查看个人信息操作# 自动化学员-子类-重写# 好处:用户对象.查看数据()# s1 = SouTiger()#创建子类、

13、# #1- 直接使用,就直接调用子类自己的方法# s1.roar()# #调用父类的实例方法-第一个父类优先# super(SouTiger,s1).roar()# #调用父类的静态方法-第一个父类优先日志代码import loggingfrom logging.handlers import Roimport datetimeingFileHandler# prSTYLE(datetime.datetime.now().strftime(%Y_%m_%d_%H_%M_%S)= fore:# 前景色黑色 红色 绿色 黄色 蓝色 紫红色青蓝色白色blackred green yellow blu

14、e purple cyanwhite:30,31,32,33,34,35,36,37,# # # # # #,back :# 背景 black red green yellow blue purple cyan white,黑色 红色 绿色 黄色 蓝色 紫红色青蓝色白色:40,41,42,43,44,45,46,47,# # # # # #mode :# 显示模式 mormal bold underline blink invert hide,终端默认设置显示使用下划线闪烁反白显示不可见:0,1,4,5,7,8,# # # #default :end : 0,defUseStyle(strin

15、g, mode = , fore =, back = ):mode=%s%STYLEmodemodeifSTYLEmode.get(mode)elsefore=%s%STYLEforeforeifSTYLEfore.get(fore)elseback=%s%STYLEbackbackifSTYLEback.get(back)elsestyle=;.join(s for s in mode, fore, back if s)style=033%sm % style if style else end=033%sm % STYLEdefaultend if style else return %s

16、%s%s % (style, string, end)debug:最细微的信息到 debug 中,这个级别就是用来 debug 的,看程序在哪一次迭发生了错误,比如每次循环都输出一些东西用 debug 级别 info:级别用于 routines,也就是输出 start finish 状态改变等信息 warn:输出一些相对重要,但是不是程序 bug 的信息,比如输入了错误的较慢error:输出程序 bug,打印异常信息,或者连接critical:用于处理一些非常糟糕的事情,比如内存溢出、磁盘已满,这个一般较少使用 class Logger:def init (self,inLevel=DEBUG

17、,inName= name ): self.logger = logging.getLogger(inName) self.logger.setLevel(inLevel)self.formatter = logging.Formatter(%(asctime)s - %(name)s-%(levelname)s - %(message)s)defaddHand(self,source):self.logger.addHandler(source)defdebug(self, msg):self.logger.debug(msg)definfo(self, msg):self.logger.i

18、nfo(msg)defwarning(self, msg):self.logger.warning(msg)deferror(self, msg):self.logger.error(msg)#defcritical(self, msg):self.logger.criticag)class FileLogger(Logger):#log 文件输出类def init (self, logName):Logger. init (self, inLevel=DEBUG, self.loggerName = logNameself.rHandler =inName= name )RoingFileHandler(_.log.format(self.loggerName,datetime.datetime.now().strftime(%Y_%m_%d_%H_%M_%S),maxBytes = 1*1024,backupCount =3,encoding=utf-8)self.rHandler.setFormatter(self.formatter) self.addHand(self.rHandler)class ConsoleLogger(Logger):#控制台输出日志类def init (self):Log

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论