2020-05-24 18:10:26
面向对象
类变量
方法
:静态方法
:类方法
:绑定方法
:属性property
单例模块:设计模式
单例的应用场景
__new__(self):实例创建,在init之前工作
记录日志的
记录错误、操作日志
给程序员看的:①统计使用;②用来做故障排除的(debug);③记录错误,完成优化代码的。
logging.basicconig:①使用方便,②不能实现,编码问题;不能同时向文件和屏幕上输出。
logging.debug,logging.warning
logger对象:
复杂:
①创建一个logger对象;
②创建一个文件操作符;
③创建一个屏幕操作符;
④创建一个格式;
给logger对象绑定文件操作符
给logger对象绑定屏幕操作符
给文件操作符设定格式
给屏幕操作符设定格式
用logger对象来操作。
import logging
logger=logging.getLogger()
fh=logging.FileHandler('log.log')
sh=logging.StreamHandler()
logger.addHandler(fh)
logger.addHandler(sh)
formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
sh.setFormatter(formatter)
fh.setFormatter(formatter)
logger.warning('message')
collections模块
from collections import OrderedDict
odic=OrderedDict([('a',1),('b',2),('c',3)])
print(odic)
# # odic['k']='k1'
# # odic['k1']='k2'
for k,v in odic.items():
print(k,v)
#模块namedtuple
#创建一个类,这个类没有办法,所有属性的值都不能修改
from collections import namedtuple
Course=namedtuple('course',['name','price','teacher'])
python=Course('python',1980,'lexm')
print(python)
print(python.name)
=======================
course(name='python', price=1980, teacher='lexm')
python
====
只读属性:t属性不能修改
import time
t=time.localtime()
print(t)
项目开发规范
补充
栈:Stack,先进先出,lifo 队列:Queue,先进先出是队列,fifo反射
hasattr
setattr
getattr
class A:
@staticmethod
def func():
print('12345')
getattr(A,)
delattr
通过对象来获取实例变量、绑定方法
通过类 来获取类变量,类方法、静态方法
通过模块名来获取模块中的任意变量(普通变量,函数,类)
通过文本件来获取本文件中的任意变量。
getttr(sys.modules[__name__],'变量名')
抽象类/接口类
就是给子类一个规范,让子类必须按照抽象类的规范实现方法。
class Foo:
def func(self):
raise NotImplementedError
class Son(Foo):
pass
s=Son()
s.func()
模块:py文件写好了的,对程序员直接提供某方面功能的文件。
import,from import
什么是包:
文件夹,存储多个py文件的文件夹。
如果导入的是一个包的化,这个包里的模块默认是不能用的。
需要完成__init__.py文件的内容。
导入一包相当于执行init.py文件中的内容。
bin start
#import os,sys
#base_path=os.path.dirname(os.path.dirname(__file__))#当前文件
#sys.path.append(base_path)
#from src import core
conf setting
src 业务逻辑
student.py
from src import core
core.py
from conf import settings
db 数据文件
lib 扩展文件
log 日志文件
os:操作系统(作业:计算文件夹大小,考虑绝对路径)
os.path.getsize('d:codes21')
#文件
#文件
#路径
#listdir,walk
sys
#sys.path 模块搜索路径,一个模块是否能被导入,全看sys.path中是否有这个模块所在的路径。
#sys.argv,获取命令行参数,python c://aaa.py remove 文件路径
#sys.module,存储了当前程序中用到的所有模块,反射文件中内容。
json,支持所有语言
#序列化,将其他类型转换成str/bytes类型
#json格式:
#1所有的字符串都是双引号
#2最外层只能是列表或者字典
#3只支持int float str list dict bool
#4存在字典的key只能是str
#5不能连续load多次
pickle,只支持py
#1所有的数据类型都可以写到文件中
#2支持连续load多次
random(作业,发红包,没一个人抢到金额概率一样,共计200元,小数的不准确性(print(random.uniform(1,5)))
import random
random.choice([1,2,3,4])#随机抽取一个
random.sample([1,2,3,4,5],3)#抽取多个
#randint
#choice
#sample
#shuffle,洗牌,算法
time
#time时间戳
#sleep()让程序暂停ns
hashlib(作业,检验文件的一致性,文件,视频,图片)
#md5
#sha
#import hashlib
#hashlib.md5('xxl'.encode())--如果使用sha算法时,将此处md5改成sha
#md5.update('str'.encode())
#print(md5.hexdigest())
datetime
from datetime import datetime
dt=datetime.now()
print(datetime.timestamp(dt))
#now()
#utc()
#strftime('%Y-%m-%d')获取到一个datetime对象
#timedelta(days=140),时间的加
#fromtimestamp(时间戳)时间戳转datetime
#timestamp(datetime对象),datetime转时间戳
pickle
shutil
#import
shutil.make_archive()压缩文件,shutil.unpack_archive()解压文件,shutil.retree()删除目录,shutil.move(),移动文件
#importlib
#import importlib
#importlib.import_module('模块名')
#print(os.path.isdir('xxx')),判断是否为目录,isfile,是否为文件
copy
getpass,在命令行密文显示
copy
logging
#两种配置方式:basicconfig,logger
collections
#OderdDict,namedtuple,deque,defaultDict
functools
#reduce(add,iterable)
三大特性:封装,继承,多态
#封装:
①广义的封装:类中的成员
②狭义的封装:私有成员,__名字,只有在类的内部使用,类的外部不能调用。
#继承,所有的查找名字(调用方法和属性)都是先找自己,自己没有找父类
#如果自己和父类都有,希望自己和父类都调用,super()指定类名直接调用
①父类,基类,超类
②派生类,子类
③多继承,查找顺序,深度优先,广度优先
④单继承,子类可以使用父类的方法
#多态
-一个类表现出来的多种状态,多个类表现出相似的状态
-user类,用户类
-vip_user
-svip_user
①鸭子类型
#vip_user,svip_user
#list,tuple
基础概念:
#什么是类:具有相同方法和属性的一类事物
#什么是对象,实例:一个拥有具体属性值和动作的具体个体
#实例化:从一个类得到一个具体对象的过程
#实例
#实例化
组合:
#一个类的对象作为另一个类对象的实例变量
类成员:类变量,绑定方法,
特殊成员:类方法classmethod
静态方法:staticmethod
属性:property
特殊成员
双下方法,魔术方法,内置方法
#__str__
__new__,构造方法
__init__,初始化方法
__dict__
__call__,对象加括号就能使用
__enter__,__exit__,with上下文管理
__getitem__
__setitem__
__delitem__
__add__,两个对象相加
__iter__
__dict__
相关内置函数:isinstance,对象和类
issubclass,类和类
type,类型,类=type(对象)
super遵循mro顺序查找上一个类的
新式类和经典类:
py2继承object就是新式类
#默认是经典类
py3都是新式类,默认继承object
新式类:
#继承object
支持super
多继承,广度优先
mro方法
经典类:
#py2中不继承object
#没有super语法
#多继承深度优先
没有mro方法
python MySQLdb模块介绍
03-24
python flask-sqlalchemy如何设置使自动建的mysql表字符集charset为utf8
06-04
python字符串连接示例
06-26
python爬虫 day01
07-07
安装并使用python requests发送http请求
07-05
通过python和websocket构建实时通信系统[扩展saltstack监控]
06-27
零基础入门python爬虫(一)
05-25
笔记本常见卡槽简介
07-22
笔记本无法连接CMCC-EDU无线的解决思路
06-27
笔记本的PCMCIA卡是否可以用于台式机?
06-30
MySQL笔记之数据备份与还原的使用详解
07-07
ThinkPad笔记本Windows 10系统下如何设置电池充电阈值
07-14
javaSE学习笔记(10)---List、Set
06-30
关于笔记本促销的高清数字电视卡售后服务问题
07-21
单显卡笔记本游戏全屏问题的调试汇总
06-22
如何修改笔记本蓝牙文件接收的保存路径(适用Broadcom2045/2046)
06-29
旭日N220系列笔记本当外接USB鼠标时触控板如何自动禁用?
06-23
标配NVIDIA双显卡笔记本机型的双显卡切换方法
06-20
联想笔记本、一体机随机摄像头无法正常使用,提示注册表信息错误(代码19)的处理方案
07-12
采用NVIDIA独立显示方案笔记本通过PowerMizer调节延长电池续航时间
06-18
笔记王(KingNoteBook) V4.11 官方版
8.92M
下载为知笔记下载
69M
下载印象笔记(笔记资料管理软件) v6.23.2.8859 中文版
122.6M
下载好笔头业务云笔记 v4.2.1 官方版
6.46M
下载有道云笔记(云笔记软件) v6.10.0.1 最新版
70.3M
下载豆麦笔记 v2.5.0.0 官方版
4.9M
下载轻笔记电脑版 v4.2.2926 官方版
3.8M
下载BatteryCare下载
1.2M
下载Evernote2Onenote
158.06 KB
下载LESLIE NOTE下载
2.54M
下载tpfancontrol下载
1.1M
下载会生活家庭记账本 v3.0.0.0
2.02 MB
下载