-
模块的定义
2020-12-29 17:21:33不能为undefine,一般为函数,但可以是对象 define({}) define([],function(){}) define(function(){}) define("aaa",[],function(){}) <p>mass Framework的模块建议写成这样 //&... -
面向对象和模块
2020-06-24 17:27:20在类中直接定义的参数是类属性,实例属性可以访问类和实例属性,类对象不能直接调用实例属性。 在类中定义,以self为第一个参数的都是实例对象。 当通过实例对象调用实例时,调用的参数就是self,当类调用实例对象时...属性和方法
- 在类中直接定义的参数是类属性,实例属性可以访问类和实例属性,类对象不能直接调用实例属性。
- 在类中定义,以self为第一个参数的都是实例对象。
- 当通过实例对象调用实例时,调用的参数就是self,当类调用实例对象时,不会把调用参数作为实例传递,故缺少一个参数。假设A是类,a是A的一个实例,当A中有一个name方法时,两者调用并传递a的值的格式分别为,a.name()和A.name(a)
- 如果在类中想定义类属性的方法,则上面一行加@classmethod(method中文名词意思为方法,类函数)此时定义的方法通常用cls来取代self
- 在类中我们称@staticmethod定义的函数为静态方法,不需要任何默认参数,静态对象可以被实例和类调用,静态方法与类本身无关,是一个功能函数,但必须以方法的形式来调用。
模块
- 模块化,顾名思义,将一个完整的程序分成一个小小的模块。
- 模块化方便开发并且方便维护。
- 模块可以复用。
- 在python中其实一个.py文件就是一个模块。
- 模块引入的方法:
- import 模块名
- import 模块名 as 模块在这个程序中的名字(自己可以给模块定义一个新名字,在调用时可以更加符合自己的习惯)
- from 模块名 import 变量,这种方法再调用时不需要用模块名.变量的格式,可以直接使用引入的变量。当需要引入一个模块中的多个变量时可以写成 from 模块名 import 变量1,变量2,变量3
- from 模块名 import 变量 as 新的名字,这样是为了防止主模块和调用模块同名,给调用的变量设置一个新的名字。
- from 模块名 import *可以直接引入模块中的所有变量,并且不需要声明模块名。
- 一个模块可以多次引入,但模块只会执行一次,模块执行时也会输出模块里的print,我们可以用if name==‘main’:来判断这个是不是主模块来决定是否运行他,这样他在被别的模块调用时,就不会执行被if判断后的代码。
- print(模块名)会输出模块和他名字所指向的位置。
- print(name)被其他模块调用时,会输出这个被调用模块的名字,如果直接运行则会输出__main__表示当前文件是主文件。
- 当模块被引用时,和主模块同名的变量会覆盖主模块的变量。
- _变量名,这样写的变量名,是不希望被别人修改的意思。
迭代器
- 迭代器时访问元素的一种方式。
- 特点是便于记住元素位置。
- 迭代器通常由方法iter和next组成
···
lst = [1,2,3,4,5,6,7]
myiter = iter(lst)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
···
输出1,2,3,4,5,6,7
这种格式就别成为迭代数据结构。
这种访问方式和
···
for i in myiter:
print(i)
···
访问的结果是一样的,不过是另一种方式。- 迭代器不可后退,当next超过元素总数时,则会报错。
生成器
在python中使用yield(中文名词意思产量)这个关键字,我们就称之为生成器函数或者生成器,他和普通函数的区别是,他会返回一个迭代器。
···
def fn():
print(‘11’)
yield 1
print(‘12’)
print(‘13’)
yield 3
print(‘14’)
yield 4
print(‘15’)
yield 5
f = fn()
print(type(f))
print(‘返回:’,next(f)) # 11 返回: 1
print(‘返回:’,next(f)) # 12 返回: 2
print(‘返回:’,next(f)) # 13 返回: 3
···
输出:
<class ‘generator’>
11
返回: 1
12
13
返回: 3
14
返回: 4
<class ‘generator’>表示这个函数的类型是迭代的,事实上只要函数中有一个yield函数就是迭代的。next函数每次会在函数中读取一个yield变量。 -
对模块开发卷宗的理解_java模块化的思考系列——模块的定义
2020-11-27 14:13:15模块化似乎是一个老生常谈的问题,在这里先聊聊一些背景,设计模式曾经风靡一时,但貌似模式变得很司空见惯,开发人员会经常不假思索的使用各种模式。...也就是说现有的面向对象开发模式不能很好的管...模块化似乎是一个老生常谈的问题,在这里先聊聊一些背景,设计模式曾经风靡一时,但貌似模式变得很司空见惯,开发人员会经常不假思索的使用各种模式。
确实模式帮助一代开发人员接受和认识到了一种新的编程范式,我们经常谈到的面向对象设计原则也都体现在了设计模式中,这些新形成的共识指导了面向对象开发,但问题是创建大型软件系统依然是困难的,它们依然难以维护’、扩展和管理,也就是说现有的面向对象开发模式不能很好的管理系统复杂性,他们解决的是软件开发中的逻辑设计问题,但在软件的物理设计方面还有很大挑战,这里就引出了什么是物理设计、逻辑设计又是何物?
- 逻辑设计:逻辑设计是关于语言结构的,如类、操作符、方法和包。识别类的方法、类之间的关系以及包的结构问题是逻辑设计问题。例如,觉得一个类是否需要继承?是否单例?一个操作是否为抽象这都是逻辑设计问题,可想而知,大多数开发人员都是在操作这些对象,就会不断处理逻辑设计问题,逻辑设计只是软件设计挑战的一方面,另一方面就是物理设计。
- 物理设计:物理设计表现为物理实体的操作,比如如何打包部署,如何决定这个类属于哪一个部署单元,可部署单元实体之间的关系都是物理设计的问题。遗憾的是大多数团队付出很大一部分时间在逻辑设计上,但在物理设计上却很少下功夫,物理设计说白了就是如何将系统拆分为模块,以及管理模块之间关系的方法,缺乏物理设计的逻辑设计通常也不会达到预期的效果。
那么具体在java中我们如何理解模块呢?简单说就是“一个软件块” (貌似等于没说),但这个定义不好区分于类,包,组件和服务,关于模块它应该具备以下特征:可部署,可管理,可重用,可组合,无状态的软件单元,来个图先
定义模块
- 可部署:没错,不同其他软件单元,它是一个部署单元,模块所表达的意义更多是粗粒度物理层面的实体,可能你想到了很多例子如EAR,WAR,JAR。
- 可管理:可管理的意思就是说在运行时可进行安装、卸载和更新,包括版本的管理。将系统拆分为模块有助于开发人员隔离开发自主模块并按照模块边界规划开发工作(如EAR,WAR,JAR)。
- 可重用:这里说的模块其实是进程内重用单元,尽管SOA(面向服务的架构 Service-Oriented-Architecture)也是来设计软件模块的,但这里所述的模块与应用或服务不同,它不属于分布式技术,也就是说模块暴露的操作是通过直接调用方法触发的。
- 可组合:模块是可以组合的,大模块可以由小模块组成,粗粒度模块是由细粒度的模块组合的。
- 无状态:模块本身是无状态的,尽管我们在使用模块时需要实例化其中的类,这些类会保持某种状态,就模块本身而言是无状态的(如EAR,WAR,JAR)。
- 综上述:java中最适合做模块的单元是?没错就是jar。
下一篇我将讲解下【模块化实践包含哪些方面】,敬请期待!个人理解有所纰漏,还请老铁们多多指教!
-
面向对象七大设计原则(附带定义说明)
2020-12-15 11:08:41定义:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。 说明:一个类或模块,所承担的职责越多它被复用的可能性就越小,耦合性就越大,当其中一个职责变化的时候可能会影响其他职责的运作。 二...一、单一职责原则
- 定义:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。
- 说明:一个类或模块,所承担的职责越多它被复用的可能性就越小,耦合性就越大,当其中一个职责变化的时候可能会影响其他职责的运作。
二、开闭原则
- 定义:软件实体应该对扩展开放,对修改关闭。
- 说明:通俗的说就是软件实体应该尽量在不修改源代码的情况下进行扩展。
三、里氏代换原则
- 定义:所有引用到基类的地方必须能透明的使用其子类的对象
- 说明:在使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用使用基类类型来定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
四、依赖倒转原则
- 定义:高层模块不应该依赖低层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象
- 说明:依赖倒转原则要求针对接口编程,不要针对实现编程。使用接口或抽象类进行变量类型声明,参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。
五、接口隔离原则
- 定义:客户端不应该依赖那些它不需要的接口。
- 说明:当我们的接口太大的时候,需要将它分割成一些更小的细节接口,每一个接口应该承担一种相对独立的角色,不干不相关的事,该干的事都要干,也就是前面单一职责原则。
六、合成复用原则
- 定义:优先使用对象组合,而不是通过继承来达到复用的目的。
- 说明:在一个新的对象里通过关联关系(包括组合,聚合)来使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法达到复用功能的目的。尽量使用关联关系,少用继承,降低耦合度
七、迪米特法则
- 定义:每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
- 说明:一个软件实体应当尽可能少的与其他实体发生相互作用,这样当某个模块需要或者类发生修改的时候会尽量少的影响其他模块,扩展会相对容易。
-
tp5将路由规则的作用对象改为模块
2018-09-11 16:29:28本来只是想在index模块使用,突然发现影响到了admin模块,admin模块下的admin/news/xxx 不能正常访问了,原因就是路由规则影响到了。 后来查了下文档,说是route.php是针对的应用,单独在模块里定义route.php是无效...在使用tp5的路由是,写了一个路由规则(route.php)
本来只是想在index模块使用,突然发现影响到了admin模块,admin模块下的admin/news/xxx 不能正常访问了,原因就是路由规则影响到了。
后来查了下文档,说是route.php是针对的应用,单独在模块里定义route.php是无效的,当然,也可以在配置文件中的route_config_file中通过 模块名/route.php 的方式添加使模块里定义的route.php生效,但是仍然是影响到admin模块,
然后,我就又走了老套路。。改代码
具体怎么找的我就不说了,直接上结果
最终在\thinkphp\library\think\App.php里找到了routeCheck方法
把方法里的路径加上BIND_MODULE."/",BIND_MODULE需要你在模块的入口文件定义,也就是你的模块名,这样,访问的时候,只会使用对应模块下的路由规则(route.php),不会相互影响,当然,不要再runtime文件夹下加route.php,不然就不灵了,动态添加的话,我没有试,因为比较懒。。。。你可以自己试试成不成,不成的话,你试试把\thinkphp\library\think\console\command\optimize\Route.php下面的buildRouteCache方法照着上面的做法修改下,有用的话记得告诉我
-
node.js中global模块
2018-08-01 14:42:03global 一、全局对象 global:JavaScript 中window是全局对象,而node.js中global是全局对象,但是window ...定义在 global 上面的变量,不需要在模块中通过 exports 输出,其他模块中也能使用。 注意在使用时要... -
[ JAVA ] 多个泛型对象接口定义
2018-02-27 16:18:31有些时候我们在定义一个类去实现泛型接口时,我们并不确定这个类将要实现哪种类型的类,这时我们就不能确定接口中的泛型,那么接口中的泛型尚未确认,这时就要求这个类也必须定义泛型,而且泛型名称要一致。... -
python 类用法详解_对python模块中多个类的用法详解
2021-02-03 04:40:45小编定义了一个类 想在python命令行里执行 不知道为什么不能创建对象也不Chain.py是模块(Module), 在代码里定义的Class Chain是在模块里定义的类 一种方法是from Chain import Chain 还有一种方法是用 a = Chain.... -
Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
2015-03-25 21:26:16但是cPickle模块中定义的类型不能被继承(其实大多数时候,我们不需要从这些类型中继承。)。cPickle和pickle的序列化/反序列化规则是一样的,我们可以使用pickle序列化一个对象,然后使用cPickle来反序列化。同时,... -
模块
2020-10-24 22:24:17パイソン学習の第14回講義一、属性和方法 一、属性和方法 类属性 类属性:直接在类中定义的... # 类中的属性只能通过类对象来修改,不能通过实例对象来修改。 count = 0 # pass a = A() a.count = 10 print('A', -
ES6模块
2020-04-27 17:35:27类 语法看起来更简洁、优雅、可读性高、可维护...方法间不能加分号。 主体 prototype,静态属性,公共属性,name 属性 实例属性 定义在实例对象( this )上的属性 模块 之前的模块有几个毛病 1.变量冲突 2.依赖要... -
ruby 模块
2015-05-01 22:35:361、module 模块不能被实例化,也不能被子类化。模块是独立的,在继承体系中没有任何所谓的“模块等级”。所有的类都是模块,但并非所有的模块都是类。 模块名需用大写字母开头。定义一个模块会创建一个跟模块同名... -
PYTHON中对象命名的单下划线与双下划线的区别(私有和保护)
2017-08-12 21:40:02_name 不能用'from moduleimport *'导入 __name__ 系统定义名字 __xxx 类中的私有变量名因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号 变量名_xxx被看作是“私有 的”,在模块或类外不可以... -
python模块
2019-01-23 23:09:07* decimal:python中的float使用双精度的二进制浮点编码来表示的,这种编码导致了小数不能被精确的表示,例如0.1实际上内存中为0.100000000000000001,还有3*0.1 == 0.3 为False. decimal就是为了解决类似的问题的,... -
洗礼灵魂,修炼python(40)--面向对象编程(10)—定制魔法方法+time模块
2019-10-02 01:25:41而在python中,其实那些所谓的内置函数,内置方法,内置属性之类的其实也是自定义出来的,不过是龟数开发python时已经给出了,已经自带了基本能想到的功能都带有了,换句话就是已经给我们事先定义好了,要用的话,... -
python中Json、os、sys、hashlib等内置模块
2020-09-06 18:49:52函数有下列调用模式 函数调用模式 ...单独独立调用的,就是函数调用模式,即 函数名( 参数 ),不能加任何其他的东西, 对象 o.fuc() 就不是了。 在函数调用模式中, this 表示全局对象 window 任何 -
变量定义
2019-07-20 17:56:00类外的半私有对象、私有对象,功能一致,均是在本模块中可以正常使用,但是不能被直接导入并调用 如果一定要在模块外使用,那么需要导入本模块,然后使用(模块名.变量名)进行调用 b.类中 类中的半私有对象,... -
远程医疗系统中的音视频模块
2012-12-24 17:07:00传统的远程医疗的定义是指对于不能前来就医的远方病人施行简单医术的特殊医疗方式。而现代是特指借助现代通信技术实现的对于远地对象的医疗服务系统,利用远程医疗系统可以对远地对象进行检测、监护、诊断等。 ... -
下面我们看一个例子:由于安全原因,我们需要所有的请求都需要在header中设置一个csrfToken,如果csrfToken不存在时,我们需要先请求一个csrfToken,然后再发起网络请求,由于请求csrfToken是异步的,所以我们需要在...
-
ruby的模块
2010-05-20 17:16:51不过与类不同,模块不能被实例化,也不能被子类化。模块是独立的,在继承体系中没有任何所谓的“模块等级”。 模块对象是Module类的一个实例,所有的类都是模块,不过并非所有的模块都是类。 模块有些面向过程的... -
Javascript 模块模式
2013-12-05 21:38:00模块模式(Module Pattern)...不过,任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量。而特权方法作为闭包有权访问在函数中定义的所有变量和函数。 模块模式是多个概念的结合... -
详解nodejs 文本操作模块-fs模块(二)
2020-12-23 10:35:49前一篇学习了文件的打开和关闭,文件操作总不能只包含打开和关闭吧,这里就开始文件的读写操作。 fs模块方法 1:read和readSync方法 该方法,是从文件的指定位置处读取文件,一直读取到文件底部,然后江都区到的内容... -
spss和python是什么_我不能用spss和python从.sav文件中删除案例
2021-01-15 00:51:30我在datastep中通过定义一个dataset对象,然后获取它的case列表来实现这一点。然后我使用del datasetObj.cases[k]删除数据步骤中有问题的案例。在我的问题是:假设我有一个数据集食品安全它是spss中的活动数据集,... -
node.js模块
2018-05-02 10:01:04前言: Node.js中的模块就相当于JAVA语言里面的类,在模块中包含成员变量和成员方法 学过JAVA 的朋友可以将模块当成JAVA类来学习 当我们在js当中定义一个变量 var a = 10 我们可以通过window.a的方式去访问a ... -
VB类与模块的区别
2011-07-17 10:50:08类可以实例化为对象,而模块则不能。由于模块的数据只有一个副本,因此当程序的一部分更改模块中的公共变量时,如果程序的其他任何部分...类可以被继承,也可以实现接口,模块则不能在类中定义的成员其作用范围在类的特 -
Java-模块
2020-03-03 11:14:14不能调用非静态代码块。静态变量也有默认初始化。 构造代码块:直接写在类中的代码块,只有在实例化对象的时候才会调用,并且优先于构造方法执行。每次实例化对象时都会执行构造中的代码,会执行多次。 局部代码块:...
-
系统分析师 复习笔记精华版.pdf
-
C#关于base64图片字符串的压缩方法
-
css3实现心形
-
VMA_8_6_10_User_Manual.pdf
-
2021年 系统分析师 系列课
-
C/C++反汇编解密
-
RabbitMQ是什么东西?
-
华为1+X——网络系统建设与运维(中级)
-
2021-03-04 Python学习笔记
-
tensorflow2.0使用VGG16预训练模型实现猫狗数据集2分类
-
全国城市邮编大全数据集
-
什么是运维?
-
小型在线聊天室php版
-
一键部署JDK+Tomcat+jenkins
-
两个线程交替打印输出的各种写法
-
Python字符串逆序输出
-
现在给你三百台服务器,你怎么对他们进行管理?
-
【布道者】Linux极速入门
-
Windows系统管理
-
C/C++:哈夫曼编译码器.rar(含完整注释)