Python
Python学习笔记
捕获一只小肚皮
沉心静气,一往无前
展开
-
08静态方法
在实际开发中,还可能会碰到另外的情况,那就是在类里面定义函数时可能既不会访问 类方法 和 类属性也不会访问 实例方法 和 实例属性eg:class DOg(object): def run(self): print("小狗要跑")在这个例子中,run变没有访问任何方法和属性,因此它是静态方法那么,我们是怎样定义静态方法的了?模式:class 类: @staticmethod #括号里面不需要再添加self def 方法(): pa原创 2020-12-19 17:01:25 · 109 阅读 · 1 评论 -
06类属性的访问方法
class Tool(object): count = 0 def __init__(self,name): self.name = name Tool.count += 1 tool1 = Tool("榔头")tool2 = Tool("斧头")tool3 = Tool("水桶")print("工具对象总数%d"%tool3.count)运行结果:class Tool(object): count = 0 .原创 2020-12-19 16:53:54 · 630 阅读 · 1 评论 -
11 单例设计模式
单例目标单例设计模式__ new __ 方法Pyhon中的单例01.单例设计模式设计模式设计模式是前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对某一特定问题的成熟的解决方案使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性单例设计模式目的-- 让类创建的对象,在系统中只有 唯一的一个实例每一次执行类名.()返回的对象,内存地址是相同的单例设计模式的应用场景音乐播放 对象回收站 对象原创 2020-12-20 11:00:38 · 115 阅读 · 1 评论 -
05类属性
类属性:记住,是用来记录与==类==相关的属性class Tool(object): count = 0 def __init__(self,name): self.name = name Tool.count += 1 a = Tool("a")b = Tool("b")c = Tool("c")print(Tool.count)原创 2020-12-19 16:51:04 · 201 阅读 · 1 评论 -
07类方法
03.类方法和静态方法3.1类方法●类属性就是针对类对象定义的属性使用赋值语句在class 关键字下方可以定义类属性类属性用于记录与这个类相关的特征●类方法就是针对类对象定义的方法在类方法内部可以直接访问类属性或者调用其他的类方法语法如下@classmethoddef 类方法名(cls): pass●类方法需要用修饰器@classmethod 来标识,告诉解释器这是一个类方法●类方法的第一个参数应该是cls由哪一个类调用的方法,方法内的cls就是哪一个类的引用这个参数原创 2020-12-19 16:59:24 · 121 阅读 · 1 评论 -
10实例,类,静态三种方法综合案例
3.3方法综合案例需求1.设计一个Game 类2属性:定义一个类属性top_score 记录游戏的历史最高分定义一个实例属性player_name记录当前游戏的玩家姓名3.方法:静态方法show_help显示游戏帮助信息类方法show_top_score显示历史最高分实例方法start_game开始当前玩家的游戏4.主程序步骤1)查看帮助信息2)查看历史最高分引)创建游戏对象,开始游戏分析:类属性和类方法有关系静态方法无关于 任何方法和属性class原创 2020-12-19 17:04:24 · 459 阅读 · 2 评论 -
13 单例特殊化初始值
只执行一次初始化工作在每次使用类名()创建对象时,Python 的解释器都会自动调用两个方法:__new__分配空间__init__对象初始化在上一小节对__new__ 方法改造之后,每次都会得到第一次被创建对象的引用.但是:初始化方法还会被再次调用需求扯初始化动作只被执行一次解决办法1.定义一个类属性init_flag标记是否执行过初始化动作,初始值为False2.在__init__方法中,判断init_flag. 如果为False 就执行初始化动作3.然后将原创 2020-12-20 11:29:02 · 136 阅读 · 1 评论 -
12 Python中的单例
Python中的单例● 单例–让类创建的对象,在系统中只有唯一的一一个实例定义一个类属性,初始值是None, 用于记录单例对象的引用重写_new__ 方法如果类属性is None,调用父类方法分配空间,并在类属性中记录结果返回类属性中记录的对象引用看下面流程图,当我们第一次创建对象时候,便为instance分配了一个内存地址,再次创建对象时候,便没有再调用基类object的new,返回的是上一次已经创建好了的且分配好了内存的instance,因此,所有对象其实都是在一个内存地址class原创 2020-12-20 11:04:19 · 155 阅读 · 1 评论 -
02私有属性
私有属性(即不希望被访问到的属性)模式: __ 属性名 __ 方法名eg:class Women: def __init__(self,name): self.name = name self.__age = 18 def secret(self): print("%s不希望别人看到她的年龄是%d岁"%(self.name,self.__age))xiaofang = Women("小芳")print(xiaofang._原创 2020-12-19 16:40:37 · 178 阅读 · 1 评论 -
09实例方法
实例方法: 对象的方法模式:class A: def __init__(self,name): self.name = name def sa(self): print("%s 这叫实例方法"%self.name) 即 类里面的函数第一个参数是self。原创 2020-12-19 17:03:14 · 90 阅读 · 2 评论 -
01 面向对象封装案例
封装案例1.小明爱跑步:需求小明体重75.0公斤小明每次跑步会减肥0.5公斤小明每次吃东西体重增加1公斤既然是小明,因此需要定义一个人人类然后会有体重,名字等属性跑步以后会怎样,吃东西以后会怎样,这些便是函数Personnameweight__ init __(self,name,weight)__ str __(self)run(self)跑步需求eat(self)吃东西需求class Person: def __init原创 2020-12-19 16:37:27 · 411 阅读 · 2 评论 -
21模块的搜索顺序:
模块的搜索顺序:首先搜索当前目录指定的模块当没有搜索到时候才开始搜索系统文件因此,在开发时,给文件起名时,不要和属性名相同的系统模块重名原创 2020-12-21 08:29:44 · 111 阅读 · 1 评论 -
19 模块概念
模块什么是模块? 就是python的源文件程序.可以用import导入不同的模块,并且运用模块.内容形式使用例如源程序1 py1 有以下内容:def func(): return"哈哈哈哈"class Dog(object): pass源程序2 py2有以下内容:def func(): return"嘿嘿嘿嘿"class Cat(object): pass进行使用:import py1import py2print(py1.f原创 2020-12-20 23:36:26 · 126 阅读 · 0 评论 -
20 模块通配符导入
基本语法:from 模块名 import *这种写法便不用再使用模块名.方法进行可以直接使用模块里面的任何方法原创 2020-12-20 23:38:18 · 144 阅读 · 0 评论 -
22 模块原则
原则每一个模块,当它被导入的时候应该符合其所有的代码都应该可以被顺利执行再导入文件时,其所有未有任何缩进的代码都会被执行一遍!举例:模块1:p1def func(): print("哈哈哈")print("ooooo")导入:import p1print("*" * 10)结果ooooo**********再例子:p1:def func(): print("哈哈哈")print("ooooo")func()导入import p1pr原创 2020-12-21 08:31:21 · 153 阅读 · 0 评论 -
24 发布模块
发布模块(windos终端)概念: 希望自己开发的模块 分享 给所有人发布模块的步骤只有三步骤:第一步就是建立一个setup.py的文件第二步就是构建模块(在python解释器终端里面运行一遍此代码python setup.py build)第三步就是生成发布压缩包(在python解释器终端里面运行一遍此代码python setup.py sdist)setup文件中的代码非常固定(这里以上次建立的包为例):from distutils.core import setup原创 2020-12-21 08:42:53 · 227 阅读 · 0 评论 -
25 安装别人的发布模块
安装模块(终端)第一步:在某个目录文件路径下输入tar zxvf (安装包的名字)c_p_fight-1.0.tar.gz第二步:再输入 cd 解压后的包名路径并且进入第三部:输入python setup.py install为什么是某个目录文件夹下?一般在创建项目时候,路径是默认的,但是你换了路径以后,那么在该新的路径下,没有安装’‘包’’,直接导入会报错,比如:在正确路径有这个包时候可以直接导入,且不会报错不一样的路径呢??发现报错!!!那么,我们就在这个路径下把该原创 2020-12-21 08:45:56 · 112 阅读 · 0 评论 -
23 包
包概念:包含多个模块的文件夹在包里面必须有一个名为__init__.py的模块报的命名规则必须是字母数字下划线,不可以带中文包的优势:可以一次性导入多个模块并且使用包的创建:在pycharm里面首先建立一个文件夹然后在文件夹里面建立一个名字为__init__.py的模块(上面两部其实在pycharm里面可以直接点击python package)最后建立多个和init模块同级的不同模块案例演练:定义一个名字为c_p_fight**** ( C语言和pyth原创 2020-12-21 08:35:24 · 113 阅读 · 1 评论 -
26 pip安装第三方模块
pip安装第三方模块首先找到Python安装目录下的Scripts文件路径可以直接在文件夹的搜索栏目里面,搜索python回车以后,它会跳出python终端命令,关闭.然后双击一下刚才输入python那里的框就是这样了删除最后一个 \python.exe就进去了,然后看到Scripts然后点击Scripts文件进入然后复制路径,在最上面的搜索栏上在cmd命令中输入 cd 复制的路径回车然后,我们以下载pygame模块为例子,直接输入 pip insatll原创 2020-12-21 08:48:32 · 113 阅读 · 0 评论 -
14 捕捉异常
捕获异常:在程序开发时候,经常会碰到执行错误,那么便需要对程序抛出的异常进行捕获,并且针对这种错误写出相应的解决代码.以此来保证开发出的产品稳定高效运行.捕获异常的基础语法:try: #想要执行的代码except: #针对性的错误处理代码例子:try: num = int(input("输入整数:"))except: print("你输入的不是正确要求类型") 但是在实际开发中,我们所遇到的不仅仅是一个错误,可能会有很多,那么便需要处理更多.那么原创 2020-12-20 23:19:10 · 146 阅读 · 0 评论 -
18 主动抛出异常的场景.
主动抛出异常:除了在程序自己执行的时候可能会因为错误等原因而主动抛出异常以外,有时候我们还需要设置它主动抛出异常什么时候需要主动设置它呢?即 应用程序 可以根据 特有的业务需要进行 主动抛出异常比如在注册登录页面的时候,密码长度要求不少于8位,如果少于8位,则主动抛出在python程序中,Exception就是一个已经定义好的类可以直接利用该类进行创建对象,并且可以把相关错误信息当成异常提示抛出(raise)例子:#首先定义一个提示输入密码的函数def input_passw原创 2020-12-20 23:28:27 · 227 阅读 · 0 评论 -
15 未知异常捕获
未知异常捕获:在程序开发中,人的精力毕竟有限,想要提前预判到所有错误几乎不可能实现.因此引入未知异常捕获概念.语法:except Exception as result: print("未知异常:%s"% result)例子:try: num = int(input()) result = 10 / num print(result)except ValueError: print("你输入的不是整数")except Exception as r原创 2020-12-20 23:21:01 · 257 阅读 · 0 评论 -
16完整的异常捕获语法
完整的异常捕获语法:try: #需要自行的代码except 错误类型1: #针对的代码except 错误类型2: #针对的代码except 错误类型3: #针对的代码except Except as result: # 打印错误信息 print(result)else: ''' 只有执行了try的内容才会执行else,一旦有任何错误,都不会执行else的内容. '''finally: ''' 无论对错,原创 2020-12-20 23:22:28 · 190 阅读 · 1 评论 -
17 异常的传递性
异常的传递: -----------------------------------------------------01异常的传递:–当函数/方法执行时候出现异常,会将异常传递给 函数/方法的调用一方如果 传递到主程序,仍然没有异常处理,程序才会被终止| 提示在开发中,可以在主程序中增加 异常捕获而在主函数中调用其他函数或者是方法,只要出现异常,都会传递到主函数的异常捕获中这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁先看01:例子def de原创 2020-12-20 23:26:52 · 350 阅读 · 0 评论 -
30 按行读取
readline()之前我们已经讲过,read()函数读取时一次性读取整个文件如果说,文件内容比较小,影响不大;但是实际开发中,很可能会碰到内容超级大的文件,那么一次性读取就会给计算机造成负担为此,这里介绍一种按行读取的方法:readline()它的执行方法:每次读取一行以后,便会将指针指到下一行的开头.每次读取是会返回内容的我们在设计读取文件的时候,一般是设计一个循环,使他按行读取例子:文件名: 啪啪啪.txt内容:曾经沧海难为水,除却巫山不是云,海内存知己,天涯若原创 2020-12-21 08:56:42 · 122 阅读 · 1 评论 -
29 文件指针概念以及文件的修改
文件指针的概念:个人认为你可以把它看作为一个光标(要在某个位置打字时,鼠标需要点击一下,然后就会弹出一个跳动的小竖线)当执行文件方法open以后,指针的默认位置是文件内容开头处执行完文件``.read()`以后,指针位置便是文件内容的末尾,此后便再也读取不到内容了因此,一个文件只可以读取一次,两次及以上便会是空的内容例子:文件名:“嘿嘿哈哈.txt”内容:曾经沧海难为水,除却巫山不是云,海内存知己,天涯若比邻,落霞与孤鹜齐飞,秋水共长天一色.开始读取:# 1原创 2020-12-21 08:55:00 · 613 阅读 · 1 评论 -
28 文件基本操作
文件的基本操作:计算机上面的文件操作步骤:第一步,打开文件第二步,读,写文件:读,将文章内容读入 内存(一个位置)中去计算机三大重要部件 CPU 内存 硬盘写,将内存的内容写入文件第三步,关闭文件那么在python环境中呢??序号函数/方法说明01open (python层面的方法)打开文件02read (文件内的方法)从CPU中读取文件,并且读取全部文件03write (文件内的方法原创 2020-12-21 08:53:13 · 441 阅读 · 1 评论 -
27 文件概念
文件概念: 在计算机硬件上保存数据的一种形式文件的划分:文本文件:可以使用 文本编辑器 进行查看一般是指所有内容都是文字二进制文件视频,音频,图片等文件只能使用相应的 其他软件打开与阅读无论是文本文件还是二进制文件,最终都是以二进制的形式在计算机上保留着...原创 2020-12-21 08:50:58 · 239 阅读 · 0 评论