实例变量

类变量,实例变量

与世无争的帅哥 提交于 2020-01-28 00:26:58
1 class a(): 2 name="11"#类变量 3 global name1#类中的全局变量 4 name1 = "22" 5 def __init__(self): 6 print self.name #实例可以访问类变量 7 self.name = "33" 8 def do(self): 9 print self.name 10 print a.name 11 print name1 12 #print name #报错,全局变量name 13 #未定义,name没有被global修饰, 14 #是类变量,而非全局变量,而在主程序 15 #中定义的变量,无需加global就是全局 16 #变量 17 aa =a() 18 aa.do()#打印33,11,22 19 a.name2="33"#类变量在类定义好后仍然能动态添加 20 # 21 print dir(a)#列出所有类变量和方法,不包括 22 #实例变量 23 print dir(aa)#列出所有类变量,实例变量和方法 24 29 c = 1#无需加global就是全局变量,可以 25 #直接被主程序中的方法使用 26 d = 1 27 def b(): 28 print c#这不是定义,而是使用 29 d = 2#在函数中定义的变量都是局部变量 30 #作用范围仅仅是函数内部 31 b() 32 print

值类型和引用类型的深层理解

陌路散爱 提交于 2020-01-27 09:14:40
引言 山重水复疑无路,柳暗花明又一村,越探究越接近事物的本质。最近在学习原型模式(Prototype)时,发现原型模式本质就是对一个类原始数据的克隆,但在学习深拷贝和浅拷贝时又发现与值类型和引用类型有着千丝万缕的联系。回想好久都没有温习基础,于是就整理了值类型和引用类型的随笔,本文内容比较基础,对于想继续深入研究的同学可以查看IL更深入探究。 1.值类型(ValueType) 值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。 值类型的变量直接存储数据,分配在托管栈中。变量会在创建它们的方法返回时自动释放,例如在一个方法中声明Char型的变量name=’C’,当实例化它的方法结束时,name变量在栈上占用的内存就会自动释放 C#的所有值类型均隐式派生自System.ValueType。 结构体:struct(直接派生于System.ValueType)。 数值类型:整型,sbyte(System.SByte的别 名),short(System.Int16),int(System.Int32),long(System.Int64),byte(System.Byte),ushort(System.UInt16),uint(System.UInt32),ulong(System.UInt64),char(System.Char)。 浮点型:float

Python核心编程第二版(中文).pdf 目录整理

夙愿已清 提交于 2020-01-25 23:43:39
python核心编程目录 Chapter1:欢迎来到python世界!- 页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向对象 1.3.3可升级 1.3.4可扩展 1.3.5可移植性:python使用C写的。 1.3.6易学 1.3.7易读 1.3.8易维护 1.3.9健壮性 1.3.10高效的快速原型开发工具 1.3.11内存管理器 :内存管理由python解释器负责,开发仅仅致力于开发计划中的应用程序。 1.3.12解释性和(字节)编译性:无需编译,当执行py文件,会生成.pyc或.pyo文件 1.4下载和安装python 1.5运行python 1.5.1命令行的交互式解释器 1.5.2从命令行启动脚本 1.5.3集成开发环境 1.5.4其他的集成开发环境和执行环境 1.6python文档 1.7比较python(python与其他语言的比较) Chapter2:Python起步- 页码:31 注:语句和表达式的区别 语句是使用关键词来组成命令,告诉解释器要做什么。 表达式没有关键词,可以使算术表达式,也可以是使用括号调用的函数。 2.1程序输出,print语句及“Hello World” :print是关键字 Print ‘%s is number %d!’%(‘python’,1)

python基础之运算符

点点圈 提交于 2020-01-24 05:32:47
算术运算符 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 31 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -11 * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 210 / 除 - x 除以 y b / a 输出结果 2.1 % 取模 - 返回除法的余数 b % a 输出结果 1 ** 幂 - 返回x的y次幂 a**b 为21的10次方(a=21,b=10) // 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 实例: 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 #!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ( "1 - c 的值为:" , c) c = a - b print ( "2 - c 的值为:" , c) c = a * b print ( "3 - c 的值为:" , c) c = a / b print ( "4 - c 的值为:" , c) c = a % b print ( "5 - c 的值为:" , c) # 修改变量 a 、b 、c a = 2 b =

Java JVM 从程序员的角度看对象初始化过程,变量加载顺序及内存分配

你说的曾经没有我的故事 提交于 2020-01-22 22:49:31
专栏原创出处: github-源笔记文件 , github-源码 ,欢迎 Star,转载请附上原文出处链接和本声明。 Java JVM-虚拟机专栏系列笔记,系统性学习可访问个人复盘笔记-技术博客 Java JVM-虚拟机 一、前言 前面我们分析过 从虚拟机的角度看对象的创建与访问 。 现在我们站在程序员角度,来看一下我们定义的一个个类及类里面的成员变量是怎么初始化的,分别什么时候初始化,以及初始化顺序和内存分配。 公网上的文章写一堆代码打印一些信息进行分析,有些把语句块的加载顺序都下结论了,这种理解对于初学者来说可行,但是随着深入的学习我们应该试着从虚拟机角度去分析整个过程。 本文从字节码及类加载过程结合虚拟机内存模型进行分析,无需进行大量源码打印,愿意验证的朋友可以采用该方法进行更复杂的初始化过程分析。 首先我们统一一下概念: 类变量,表示 static 修饰的成员变量 类常量,表示 static final 修饰的基本数据类型与字符串成员变量 静态语句块,使用 static{} 包起来的语句块 实例变量,表示随着类初始化而初始化的成员变量 实例构造器语句块,使用 {} 包起来的语句块 class Father { // 类常量 public static final String STATIC_FINAL = "static-final-Father" ; // 类变量

Python系列-python函数

偶尔善良 提交于 2020-01-22 20:44:36
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 语法 def functionname( parameters ): "函数_文档字符串" function_suite return [expression] 默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。 实例 以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。 def printme( str ): "打印传入的字符串到标准显示设备上" print str return 函数调用 定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。 这个函数的基本结构完成以后

静态变量和实例变量的区别

妖精的绣舞 提交于 2020-01-22 18:00:39
静态变量用static修饰,实例变量不用。 public class Person { static String position; String name; } 静态变量是随着类的字节码的加载而被加载进内存的,所以只要程序一启动运行到该类时就会被加载进内存,不管创建了多少个对象在内存中只存储一份。而实例变量是在创建对象以后才能被分配内存空间,创建对少个对象就会存储多少份。 静态变量被存储到内存的静态区,实例变量被存储到堆中。 静态变量是和类相关的,使用类名直接调用。实例变量是和对象相关的必须通过对象名调用。 public static void main(String[] args) { Person.position = "老师"; Person p = new Person(); p.name="老王" } 来源: 51CTO 作者: 熊熊爬楼梯 链接: https://blog.51cto.com/11583017/2430453

JVM内存堆布局图解分析

我怕爱的太早我们不能终老 提交于 2020-01-22 16:46:14
内存分析(SxtStu.java) Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。 一个完整的Java程序运行过程会涉及以下内存区域: 寄存器: JVM内部虚拟寄存器,存取速度非常快,程序不可控制。 栈: 保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的 实例 ,即堆区 对象 的引用(指针)。也可以用来保存加载方法时的帧。 堆: 用来存放动态产生的数据,比如new出来的 对象 。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。 常量池: JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的 符号引用(1) 。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。 常量池存在于堆中 。 代码段: 用来存放从硬盘上读取的源程序代码。 全局数据段:

Java中的内存处理机制和final、static、final static总结

北战南征 提交于 2020-01-22 16:43:51
装载自:http://blog.csdn.net/wqthaha/article/details/20923579 Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。 一个完整的Java程序运行过程会涉及以下内存区域: 寄存器: JVM内部虚拟寄存器,存取速度非常快,程序不可控制。 栈: 保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的 实例 ,即堆区 对象 的引用(指针)。也可以用来保存加载方法时的帧。 堆: 用来存放动态产生的数据,比如new出来的 对象 。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。 常量池: JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的 符号引用(1) 。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。

Python学习笔记——面向对象(3)

99封情书 提交于 2020-01-22 07:01:52
Python学习笔记 类变量和实例变量 类变量与实例变量的定义 类变量 :在类空间或通过类引用复制的变量 实例变量 :通过对象引用或self引用赋值的变量 class User : # 类空间中定义的变量,是类变量 category = "未知类型" def __init__ ( self , name = "User" , password = "123456" ) : # 通过self引用赋值的变量,是实例变量 self . name = name self . password = password # 通过类引用赋值的变量,是类变量 User . type = "通用用户" 类、对象可访问类变量 通过类,可获取、修改 类变量 的值; 通过对象,可获取 类变量 的值; 如果尝试通过对象为 类变量 赋值,就变成了新增 实例变量 。 如对于上述程序,可以使用打印语句将其值打印出来 print ( User . category ) 上述语句运行结果是: 通用用户 我们也可以通过类来修改 类变量 的值,如 User . category = "After changed" print ( User . category ) User . type = "Second change" print ( User . category ) print ( User . type )