实例变量

类变量、实例变量--python

我们两清 提交于 2019-11-28 07:48:07
类变量、实例变量--python 1、类变量、实例变量概念 类变量: 类变量就是定义在类中,但是在函数体之外的变量。通常不使用 self.变量名 赋值的变量。类变量通常不作为类的实例变量的,类变量对于所有实例化的对象中是公用的。 实例变量: 实例变量是定义在方法中的变量,使用 self 绑定到实例上的变量,只是对当前实例起作用。 2、访问 类变量 在类的 内部和外部 类变量都可以直接使用 className.类变量 的形式访问。但是在类的内部,也可以使用 self.类变量 来访问,但是这个是用含义就不同了(后面使用代码验证)。 实例变量 在类的内部,实例变量 self.实例变量 的形式访问;在类的外部使用 对象名。实例变量 的形式访问。实例变量是绑定到一个实例上的变量,它只是属于这个绑定的实力。而区别类变量的就是类变量是所有的来自用一个类的实例所共享。我们看到这里会有这样的疑问! 如果说类变量对所有来自这个类的所有实例所共享,那么假如我一个实例去改变了这个类变量(假设使用这样的操作 object.类变量 = value )的值,那么对于其他的实例是不是都是可见的? 答案是否定的,下面验证。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 class A

JavaScript性能优化

▼魔方 西西 提交于 2019-11-28 05:44:56
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度。 这种情况下决定程序速度的另一个重要因素就是代码本身。 在这里我们会分门别类的介绍JavaScript性能优化的技巧,并提供相应的测试用例,供大家在自己使用的浏览器上验证, 同时会对特定的JavaScript背景知识做一定的介绍。 目录 变量查找优化 变量声明带上var 慎用全局变量 缓存重复使用的全局变量 避免使用with 核心语法优化 通过原型优化方法定义 避开闭包陷阱 避免使用属性访问方法 避免在循环中使用try-catch 使用for代替for…in…遍历数组 使用原始操作代替方法调用 传递方法取代方法字符串 脚本装载优化 使用工具精简脚本 启用Gzip压缩 设置Cache-Control和Expires头 异步加载脚本 DOM操作优化 减少DOM元素数量 优化CSS样式转换 优化节点添加 优化节点修改 减少使用元素位置操作 避免遍历大量元素 事件优化 使用事件代理 动画优化 设置动画元素为absolute或fixed 使用一个timer完成多个元素动画 变量查找优化 变量声明带上var 1. 如果声明变量忘记了var,那么js引擎将会遍历整个作用域查找这个变量,结果不管找到与否,都是悲剧。 如果在上级作用域找到了这个变量,上级作用域变量的内容将被无声的改写

JavaScript性能优化

痴心易碎 提交于 2019-11-28 05:43:54
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度。 这种情况下决定程序速度的另一个重要因素就是代码本身。 在这里我们会分门别类的介绍JavaScript性能优化的技巧,并提供相应的测试用例,供大家在自己使用的浏览器上验证, 同时会对特定的JavaScript背景知识做一定的介绍。 目录 变量查找优化 变量声明带上var 慎用全局变量 缓存重复使用的全局变量 避免使用with 核心语法优化 通过原型优化方法定义 避开闭包陷阱 避免使用属性访问方法 避免在循环中使用try-catch 使用for代替for…in…遍历数组 使用原始操作代替方法调用 传递方法取代方法字符串 脚本装载优化 使用工具精简脚本 启用Gzip压缩 设置Cache-Control和Expires头 异步加载脚本 DOM操作优化 减少DOM元素数量 优化CSS样式转换 优化节点添加 优化节点修改 减少使用元素位置操作 避免遍历大量元素 事件优化 使用事件代理 动画优化 设置动画元素为absolute或fixed 使用一个timer完成多个元素动画 变量查找优化 变量声明带上var 1. 如果声明变量忘记了var,那么js引擎将会遍历整个作用域查找这个变量,结果不管找到与否,都是悲剧。 如果在上级作用域找到了这个变量,上级作用域变量的内容将被无声的改写

Vue.js 基础知识

≡放荡痞女 提交于 2019-11-28 04:03:00
一、Vue起步 Vue:构建用户界面的渐进式框架。 1.helloworld <div id="app">{{content}}</div> 原生方法: <script> var dom = document.getElementById('app'); dom.innerHTML = 'helloworld'; </script> Vue 方法: <script> //创建Vue实例 var app = new Vue({ //el项 :Vue实例接管的区域 el: "#app", //定义数据 data: { content: "helloworld!" } }); </script> 2.两秒后修改文字 <div id="app">{{content}}</div> 原生方法: var dom = document.getElementById('app'); dom.innerHTML = 'helloworld'; setTimeout(function() { dom.innerHTML = 'byeworld'; },2000) Vue 方法: var app = new Vue({ el: "#app", data: { content: "helloworld!" } }); setTimeout(function() { //$data 是 data的别名,指

python面向对象编程OOP

爱⌒轻易说出口 提交于 2019-11-28 02:56:06
学习自廖雪峰 https://www.liaoxuefeng.com/wiki/1016959663602400/1017496679217440 一、类与实例 面向对象的设计思想是抽象出Class,根据Class创建Instance。 class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print('%s: %s' % (self.name, self.score)) __init__下是类的 属性 ,print_score()是类的 方法 ,self指向创建的实例本身。在创建实例的时候, self 不需要传,Python解释器自己会把实例变量传进去。 二、访问限制 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的 name 、 score 属性。 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线 __ ,在Python中, 实例的变量名如果以 __ 开头 ,就变成了一个私有变量(private),只有内部可以访问,外部不能访问,所以

python常见问题

混江龙づ霸主 提交于 2019-11-28 00:20:47
1、 __new__.__init__区别,如何实现单例模式,有什么优点 __new__是一个静态方法,__init__是一个实例方法 __new__返回一个创建的实例,__init__什么都不返回 __new__返回一个cls的实例时后面的__init__才能被调用 当创建一个新实例时调用__new__,初始化一个实例时调用__init__ 2、深浅拷贝 浅拷贝只是增加了一个指针指向一个存在的地址,而深拷贝是增加一个指针并且开辟了新的内存,这个增加的指针指向这个新的内存,采用浅拷贝的情况,释放内存,会释放同一内存,深拷贝就不会出现释放同一内存的错误 3、HTTP/IP相关协议,分别位于哪层 http协议是超文本传输协议,http协议是基于TCP/IP通信协议来传递数据 http协议工作与c/s架构上,浏览器作为http的客户端通过URL向http服务端即web服务器发送所用请求。web服务器收到所有请求后,向客户端发送响应信息, http特点是短连接,无状态 地址栏键输入URL,按下回车之后经历了什么? 1.浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址 2.解析出IP地址后,根据IP地址和默认端口80,和服务器建立TCP连接 3.浏览器发出读取文件的http请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器 4.服务器对浏览器请求做出响应

python--函数

回眸只為那壹抹淺笑 提交于 2019-11-27 22:48:26
Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 () 。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 语法 Python 定义函数使用 def 关键字,一般格式如下: def 函数名(参数列表): 函数体 默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。 实例 让我们使用函数来输出"Hello World!": >>> def hello ( ) :    print ( " Hello World! " ) >>> hello ( ) Hello World ! >>> 更复杂点的应用,函数中带上参数变量: 实例 # 计算面积函数 def area ( width , height ) :   return

python中几个常见的魔法方法

旧时模样 提交于 2019-11-27 20:43:29
首先,什么是魔法方法呢?在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法。 __ init__()方法 当一个实例被创建的时候调用的初始化方法,在创建对象时默认调用。 __ init __()方法中默认有一个参数名字为self,如果在创建对象时传递了2个参数,那么__init __()方法除了self作为第一个形参外还需要2个形参,例如__init __(self,x,y)。 之前我们是这样给对象添加属性的: class Student: pass stu1 = Student() stu1.name = "张三" stu1.age = 18 **现在我们利用__init__()方法简化代码** class Student: def __init__(self, name, age): self.name = name self.age = age stu1 = Student("张三", 18) 是不是代码看起来简洁多了呢 str ()方法 一般用于说明对象,或者自己定义一个想要输出的结果。 当调用str()时会调用__str __(),即该对象被强制转换成字符串类型。 当使用print()输出该对象时也会调用__str __()方法,只要自己定义了__str __()方法,那么就会打印这个方法中return中的数据。 **没有定义_

20182301 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结

﹥>﹥吖頭↗ 提交于 2019-11-27 18:40:09
20182301 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结 教材学习内容总结 面向对象程序设计的核心是类的定义,它代表定义了状态和行为的对象 toString方法在将对象传递给print和println方法,以及将一个对象与一个字符串连接时,会自动调用对象的toString方法 public String toString() { String result = Integer.toString(faceValue); return result; } 变量的作用域依赖变量声明的位置,作用域决定在哪里可以使用变量 封装 不允许对象的代码直接访问变量,只能调用 可见性修饰符控制类中成员的访问权限。public,private和protected 访问方法:getX;设置方法:setX;客户可以通过它管理数据 return 方法头部指定的返回值类型可以是:基本类型、类名、保留字void 方法的返回类型应该与方法头中规定的返回值类型一样 方法应该只有一条return语句作为方法体的最后一行 参数 当调用方法时,将实参复制给形参 方法中,形参和实参互为别名 构造方法 构造方法不能有任何的返回值,即使是void也不行 用来初始化新创建的对象 静态变量 eg:private static int count = 0; 静态变量由类中的所有实例所共享