静态函数

实例方法、类方法和静态方法

耗尽温柔 提交于 2020-04-08 13:58:07
Python中常用的三种方法: 1. 实例方法 (常见函数) 2. 静态方法 (@staticmethod) 3. 类方法 (@classmethod) 实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法); 调用:只能由实例对象调用。 类方法 定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它性来传递类的属和方法(不能传实例的属性和方法); 调用:实例对象和类对象都可以调用。 静态方法 定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用实例的任何属性和方法,使用类的属性和方法需要使用类对象引用; 调用:实例对象和类对象都可以调用。 一、区别    二、代码示例    #!/usr/bin/env python # -*- coding:utf-8 _*- __author__ = '池偏一' ''' @author:shz @license: Apache Licence @file: testargs.py @time: 2018/06/19 @site: @software: PyCharm ''' import sys reload(sys) sys.setdefaultencoding

python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

好久不见. 提交于 2020-04-08 12:26:48
1. 类对象和实例对象   Python 中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间。类对象具有以下两种操作: 可以通过“类名()”的方式实例化一个对象。 可以通过“类名.类属性”的方式来访问一个类属性。   如果说类时一种概念性的定义,是一种类别,那么实例对象就是对这一类别的具体化、实例化,即实例化对象是类对象实例化之后的产物。 class Person:# 声明一个类对象 pass p1 = Person()#声明一个实例对象 print(Person)#输出结果:<class '__main__.Person'> print(p1)#<__main__.Person object at 0x0000015F7F94D0F0> 2 类变量与实例变量 2.1 概念上的区别   类变量是指是指该类的所有实例说共有的数据,实例变量是该类每一个实例所特有的数据。这么说的话可能还是很抽象,我们拿人类(Person类)来打比方,人类能移动(move=True),这是每一个人(张三、李四)都能做的,所以我们可以说人类能移动,张三能移动,李四也能移动,这里的移动(move)就是一个类变量。但每一个人都可能有不同的姓名(name)和年龄(age),张三可能20岁,李四可能30岁,但是我们不能说人类(Person)都是20岁或30岁

动态链接库与静态链接库的区别

隐身守侯 提交于 2020-04-07 15:02:10
静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。静态链接库与静态链接库调用规则总体比较如下。 对于静态链接库(比较简单): 首先,静态链接库的使用需要库的开发者提供生成库的.h头文件和.lib文件。 生成库的.h头文件中的声明格式如下: extern "C" 函数返回类型 函数名(参数表); 在调用程序的.cpp源代码文件中如下: #include "..\lib.h" #pragma comment(lib,"..\\debug\\libTest.lib") //指定与静态库一起链接 第二,因为静态链接库是将全部指令都包含入调用程序生成的EXE文件中。因此如果用的是静态链接库,那么也就不存在“导出某个函数提供给用户使用”的情况,要想用就得全要!要不就都别要!:) 对于动态链接库: 动态链接库的使用需要库的开发者提供生成的.lib文件和.dll文件。或者只提供dll文件。

你必须会的 JDK 动态代理和 CGLIB 动态代理

邮差的信 提交于 2020-04-06 15:52:30
我们在阅读一些 Java 框架的源码时,基本上常会看到使用动态代理机制,它可以无感的对既有代码进行方法的增强,使得代码拥有更好的拓展性。 通过从静态代理、JDK 动态代理、CGLIB 动态代理来进行本文的分析。 静态代理 静态代理就是在程序运行之前,代理类字节码 .class 就已编译好,通常一个静态代理类也只代理一个目标类,代理类和目标类都实现相同的接口。 接下来就先通过 demo 进行分析什么是静态代理,当前创建一个 Animal 接口,里面包含 call 函数。 package top.ytao.demo.proxy; /** * Created by YangTao */ public interface Animal { void call(); } 创建目标类 Cat,同时实现 Animal 接口,下面是 Cat 发出叫声的实现。 package top.ytao.demo.proxy; /** * Created by YangTao */ public class Cat implements Animal { @Override public void call() { System.out.println("喵喵喵 ~"); } } 由于 Cat 叫之前是因为肚子饿了,所以我们需要在目标对象方法 Cat#call 之前说明是饥饿

todolist项目

纵然是瞬间 提交于 2020-04-06 00:23:38
首先配置 静态文件和模板文件: STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. os.path.join(BASE_DIR, 'static'),) TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. os.path.join(BASE_DIR, 'templates'),) import osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))在settings.py里面 其次配置配置数据库

Java之关键字的使用

耗尽温柔 提交于 2020-04-05 22:03:52
java中有很多的关键字,他们的使用让Java语言变得更加灵活、易用,下面将介绍Java中最常用的几个关键字并说明其用法。 关键字:return 1.使用范围: 使用在方法体中 2.作用: ​ ① 结束方法 ​ ② 针对于返回值类型的方法,使用"return 数据"方法返回所要的数据。 3.注意点: return关键字后面不可以声明执行语句。 在异常处理中try-catch-finally的结构中,如果try或catch中的结构中写了return,但是finally中的结构仍会执行。 关键字:this 1. 可以调用的结构: 属性、方法;构造器 2. this调用属性、方法: this理解为:当前对象 或 当前正在创建的对象 2.1 在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。但是,通常情况下,我们都择省略"this."。特殊情况下,如果***方法的形参和类的属性同名时***,我们必须显式的使用"this.变量"的方式,表明此变量是属性,而非形参。 2.2 在类的构造器中,我们可以使用"this.属性"或"this.方法"的方式,调用当前正在创建的对象属性或方法。但是,通常情况下,我们都择省略"this."。特殊情况下,如果***构造器的形参和类的属性同名***时,我们必须显式的使用"this.变量"的方式,表明此变量是属性

静态代码块、构造代码块、构造函数、普通代码块

故事扮演 提交于 2020-04-04 06:50:42
1、静态代码块 (1)格式 在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块: public class CodeBlock { static{ System.out.println("静态代码块"); } } (2)执行时机 静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。后面在比较的时候会通过具体实例来证明。 (3)静态代码块的作用 一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码块。比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码块中。 (4)静态代码块不能存在任何方法体中 这个应该很好理解,首先我们要明确静态代码块是在类加载的时候就要运行了。我们分情况讨论:   对于普通方法,由于普通方法是通过加载类,然后new出实例化对象,通过对象才能运行这个方法,而静态代码块只需要加载类之后就能运行了。   对于静态方法,在类加载的时候,静态方法也已经加载了,但是我们必须要通过类名或者对象名才能访问,也就是说相比于静态代码块,静态代码块是主动运行的,而静态方法是被动运行的。   不管是哪种方法,我们需要明确静态代码块的存在在类加载的时候就自动运行了,而放在不管是普通方法还是静态方法中,都是不能自动运行的。 (5

zlib1.2.11静态编译

痞子三分冷 提交于 2020-03-31 15:33:17
1. 进入官网 http://zlib.net/ ,下载且解压zlib1211.zip; 2. 打开已解压的zlib-1.2.11,进入win32文件夹; 3.将Makefile.msc复制到上一层,也就是图2,未进入win32前的地方 4.打开VS2013命令行工具,使用cd命令进入zlib-1.2.11目录(第3步Makefile.msc所在的目录) 5.键入命令行:nmake /f Makefile.msc 6.回车执行 7.此时打开zlib-1.2.11目录,我们发现已经生成一系列文件。zlib静态库只需要zlib-1.2.11目录生成的三个文件,zlib.h / zconf.h / zlib.lib,但是请勿使用此时生成的zlib.lib,VS2013测试此时生成的zlib.lib静态库,使用函数uncompress,将一直断在汇编L_get_length_code_mmx.lib(亲身经历)。 我们需要在VS2013将预处理器中ASMINF宏删除重新编译一份工程(不要着急,稍后就说怎么做)。那么,我们之前做的工作是否白费了呢?不是的。 9.zlib-1.2.11目录,进入contrib目录,再进入vstudio目录,选择你的VC版本目录,具体看对应的表,VS2013选择vc12目录; VS与VC对应关系 VS 6.0 VC6.0 VS 2002 VC7.0 VS

java 面向对象——进度1

孤人 提交于 2020-03-31 06:46:50
面向对象: 1,面向对象和面向过程思想。 面向对象强调的是对象实例。 面向过程强调的是动作。 对象将动作进行封装。 在问题领域中,我们先去找的都是涉及的对象, 然后分析对象的属性和行为。 2,面向对象的特点。 1,是一种常见思想。 2,复杂变简单。 3,执行者变指挥者。 举例:面试的例子。 3,类与对象的关系。 类:就是对事物的描述,其实类就是将对象共性的内容进行抽取。 对象:就是该类事物实实在在存在个体,在java中通过new来完成创建的, 堆内存的对象主要用于封装对象中的特有数据。 4,类中的成员: 成员变量:事物的属性, 成员函数:事物的行为。 成员变量和局部变量的区别? 答: 如何使用成员,只要建立该类对象,并通过 "对象.对象成员" 就可以完成调用 5,封装。 隐藏实现细节,并对外提供公共的访问方式。 函数或者类都是一个封装体。 特点: 1,隔离的变量。 2,便于使用。 3,提高复用。 4,提高安全性。 举例:机箱的例子 体现之一:私有。 私有在源代码中的使用就是在本类中有效。 通常会将成员变量xxx私有化,并对外提供对应的setXxx getXxx方法对其进行访问。 其实目的就是成员变量访问进行控制。 让成员的访问具备可控性,提高了程序的健壮性。 私有仅仅是封装的体现形式之一而已。 自定义一个Person类。动手。 6,构造函数。 写法特点: 1,函数名和类名相同。 2

静态库和动态库的区别

喜欢而已 提交于 2020-03-31 05:45:54
real framework中不可以使用类别 或 不可以不包含类文件 real framework 中直接调用NSClassFromString函数会返回null 需要强制加载指定类 或 直接通过类名引用 linux中静态库和动态库的区别 一、不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。 2. 动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。 二、相同 都是由*.o目标文件生成 ios 开发中 动态库 与静态库的区别 使用静态库的好处 1,模块化,分工合作 2