函数封装

面向对象

自闭症网瘾萝莉.ら 提交于 2020-01-26 18:18:38
第六章 面向对象 规范化目录 规范化目录的优点 #1:加载速度块#2:可读性高#3:查询修改代码时都简单​ 规范化目录分析 划归固定的路径 将文件目录的固定路径划分完成​ settings.py配置文件 #1:基本存储的都是变量#2:静态路径,数据库的链接,配置,静态文件的的路径,基本不发生改变的​ src.py主逻辑函数 #主逻辑函数,核心函数:贯穿整个项目的主要功能​ common.py公共组件 #放置一些公用的函数,功能,方便与其他的函数或者业务需求,如:装饰器​ start启动文件 #单独的启动文件,将所有项目的功能单独放置一个文件中,开启项目方便,醒目​ register #用户信息,数据相关,多个文件​ logging日志文件 #记录用户的访问次数,转账,取钱,充钱等等.极了用户干了什么.​ README描述文件 #1:软件定位,软件的基本功能。#2:运行代码的方法: 安装环境、启动命令等。#3:简要的使用说明。#4:代码目录结构说明,更详细点可以说明软件的基本原理。#5:常见问题说明。​ 规范化目录sys模块路径加载 #版本一sys模块内置模块,文件运行时,sys内置模块就会将一些模块 自动 加载到内存. 内置模块. time,json pickle等等.以及当前目录的.如何引用到一个模块最本质的原因在于这个模块名称空间在不在内存.如果直接引用不到一个模块

jQuery~函数封装记1

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-26 14:59:24
获取某元素的所有兄弟元素、添加或删除某个元素的class属性 window.jQuery = function (nodeOrSelector) { var node; if (typeof nodeOrSelector === 'string') { node = document.querySelector(nodeOrSelector); } else { node = nodeOrSelector; }//判断输入的内容是不是选择器 return {//返回一个哈希 //获取兄弟元素 getSiblings: function () { var allChild = node.parentNode.children; var array = { length: 0 }; //空伪数组 for (var i = 0; i < allChild.length; i++) { if (allChild[i] !== node) { array[array.length] = allChild[i]; array.length += 1; } } return array; }, //添加或删除某个class属性 addClass: function (classes) { for (var key in classes) { var value = classes[key];

第十一章、类的封装

十年热恋 提交于 2020-01-26 14:30:47
目录 第十一章、类的封装 一、引子 二、如何隐藏 三、封装不是目的 第十一章、类的封装 一、引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,还有alex一起装进麻袋,然后把麻袋封上口子。照这种逻辑看,封装=‘隐藏’,这种理解是相当片面的 二、如何隐藏 *在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) * #其实这仅仅这是一种变形操作且仅仅只在类定义阶段发生变形 #类中所有双下划线开头的名称如__x都会在类定义时自动变形成:_类名__x的形式: class A: __N=0 #类的数据属性就应该是共享的,但是语法上是可以把类的数据属性设置成私有的如__N,会变形为_A__N def __init__(self): self.__X=10 #变形为self._A__X def __foo(self): #变形为_A__foo print('from A') def bar(self): self.__foo() #只有在类内部才可以通过__foo的形式访问到. #A._A__N是可以访问到的, #这种,在外部是无法通过__x这个名字访问到。 这种变形需要注意的问题是: ***1.这种机制也并没有真正意义上限制我们从外部直接访问属性,知道了类名和属性名就可以拼出名字:_类名__属性,然后就可以访问了,如a._A__N,****

第七章 面向对象(8):封装

南笙酒味 提交于 2020-01-26 14:30:27
7.11 封装 封装不是单纯意义上的隐藏 首先封装怎么实现隐藏 属性的隐藏(数据属性,函数属性) python类中,以__开头命名的属性会被隐藏。 注意:__开头__结尾的是python内置函数的意思,不是隐藏。 实际上,隐藏就是属性名的变形操作,在类定义的时候发生变形。 隐藏属性的特点: 在类的外部无法用定义时的属性名来调用:obj__AttrName 在类的内部可以直接用定义时的属性名来调用: obj__AttrName 在类定义的时候隐藏属性都发生了变化,所以也直接用变形后的属性名调用了 子类无法覆盖父类__开头的属性 class A: __x = 1 # 实际上隐藏是在定义类的时候变形了属性名,变成了 _A__x def __init__(self, name): self.__name = name # 变形成 _A__name def __foo(self): # 变形成 _A__foo print('run foo') def bar(self): self.__foo() # 类调用的时候也被变形成 _A__foo了,所以跟上面变化后相同,所以在类内部可以调用 print('from bar') # print(A.__x) # 会报错 # print(A.__foo) # 会报错 a = A('a') # print(a.__name) # 会报错 print(a

封装

柔情痞子 提交于 2020-01-24 05:59:56
封装的表现:1.函数就是一个最基本的封装体。 2. 类其实也是一个封装体。 封装的好处:1. 提高代码的复用性。 2. 隐藏了实现细节,对外提供可以访问的方式,便于调用者的使用。 3. 提高了安全性。 private(私有):比如下面的例子,age被修饰了private私有,也就是被隐藏了,private是封装的一种方式。 但是,此时的age无法直接在main方法内赋值,所以我们需要为其提供范围方式——在该类的方法让其他程序访问到,更重要的是可以在方法中提供逻辑判断。 总结:类中不需要对外提供的内容都私有化,包括属性和方法。 来源: CSDN 作者: panda没有黑眼圈*~* 链接: https://blog.csdn.net/weixin_43677405/article/details/104052533

javascript封装animate动画

眉间皱痕 提交于 2020-01-24 02:40:25
面向对象式: Element.prototype.animate=animate; Element.prototype.getStyle=getStyle; function animate(json,callback) { clearInterval(this.timer); for (var attr in json) { var that = this; this.timer = setInterval(function () { if (attr == 'opacity') { that.icur = Math.round(parseFloat(that.getStyle()[attr]) * 100); } else { that.icur = parseInt(that.getStyle()[attr]); } that.speed = (parseInt(json[attr]) - that.icur) / 10; that.speed = that.speed > 0 ? Math.ceil(that.speed) : Math.floor(that.speed); if (attr == 'opacity') { that.style.filter = 'alpha(opacity:' + that.icur + that.speed + ')'; that

LDA模型的封装

醉酒当歌 提交于 2020-01-24 01:06:51
最近一直在训练LDA模型,将LDA模型封装在一个脚本中,可以直接在终端传入参数进行LDA的训练和预测. 需要在同目录下准备一个stopwords(停用词典) #conding=utf-8 import codecs import os import re from os import mkdir from os . path import exists , isdir , abspath , join import gensim import jieba . posseg as pseg import yaml from gensim import corpora #1.数据处理工具 def data_util ( data , cut_flag = False , stopwords_file = './stopwords' ) : ''' 传入一条语料,对其进行处理,获取训练语料 :param data: 单行的语料 :param cut_flag: 是否分词,为True时,使用jieba进行分词处理 :param stopwords_file: 停用词文件 :return: list of words ''' stopwords_file = abspath ( stopwords_file ) if cut_flag : function_words = [ "d" ,

封装函数--->切换,添加,删除class

故事扮演 提交于 2020-01-23 05:07:39
var obj={}; obj.className='a b c d active';     //切换class function toggle(obj,className) { var str=obj.className; var arr=str.split(" "); var onOff=true; for (var i = 0; i < arr.length; i++) { if(arr[i]===className){ onOff=false; arr.splice(i,1); i--; } } if (onOff) { arr.push(className); } obj.className=arr.join(" "); return obj; }      //添加class function addClass(obj,className) { var str=obj.className; var arr=str.split(" "); for (var i = 0; i < arr.length; i++) { if(arr[i]===className){ return obj; } } arr.push(className); obj.className=arr.join(" "); return obj; }      //删除class  function

对Linux下MySQL C的api 简单封装

大憨熊 提交于 2020-01-19 03:47:57
下面是网上找到的网友说法: 博文一 : 在使用 mysql_query() 进行一次查询后,一般要用这两个函数之一来把结果存到一个 MYSQL_RES * 变量中。 两者的主要区别是,mysql_use_result() 的结果必须“一次性用完”,也就是说用它得到一个 result 后,必须反复用 mysql_fetch_row() 读取其结果直至该函数返回 null 为止,否则如果你再次进行 mysql 查询,会得到 “Commands out of sync; you can’t run this command now” 的错误。而 mysql_store_result() 得到 result 是存下来的,你无需把全部行结果读完,就可以进行另外的查询。比如你进行一个查询,得到一系列记录,再根据这些结果,用一个循环再进行数据库查询,就只能用 mysql_store_result() 。 sql_.h gdut17@ubuntu : ~ / code / sql$ cat sql_ . h # ifndef SQL_H # define SQL_H # include "mysql.h" class MySQL_cpp { private : MYSQL * mysql ; //mysql对象 MYSQL_RES * res ; MYSQL_ROW row ; public :

iOS - 直播总结(理论到实践)

坚强是说给别人听的谎言 提交于 2020-01-19 01:05:59
一、直播原理及流程 1.一个完整直播app原理 直播原理 :把主播录制的视频,推送到服务器,在由服务器分发给观众观看。 直播环节 :推流端(采集、美颜处理、编码、推流)、服务端处理(转码、录制、截图、鉴黄)、播放器(拉流、解码、渲染)、互动系统(聊天室、礼物系统、赞) 2.直播app实现流程 1.采集、2.滤镜处理、3.编码、4.推流、5.CDN分发、6.拉流、7.解码、8.播放、9.聊天互动 直播流程.png 3.直播app架构 直播架构.png 4.直播app技术点 二、直播基础知识介绍: 1.采集视频、音频 * 1.1 采集视频、音频编码框架 * AVFoundation :AVFoundation是用来播放和创建实时的视听媒体数据的框架,同时提供Objective-C接口来操作这些视听数据,比如编辑,旋转,重编码 * 1.2 视频、音频硬件设备 * CCD :图像传感器: 用于图像采集和处理的过程,把图像转换成电信号。 拾音器 :声音传感器: 用于声音采集和处理的过程,把声音转换成电信号。 音频采样数据 :一般都是PCM格式 视频采样数据 : 一般都是 YUV ,或 RGB 格式,采集到的原始音视频的体积是非常大的,需要经过压缩技术处理来提高传输效率 2.视频处理(美颜,水印) 视频处理原理 :因为视频最终也是通过GPU,一帧一帧渲染到屏幕上的,所以我们可以利用OpenGL