python类变量和实例变量的区别

类变量:是为类服务的,类所有的实例都共享使用,在一个地方被改变,所有调用的地方变量值都改变。定义类时的写法为类名.变量名

实例变量:是在实例中生效的,每个实例变量的值都根据实例本身需求进行修改,不会影响其他实例,定义类时的写法为self.变量名

(1)定义一个类

class C:

a = 0   #类变量

b = 0   #类变量

def __init__(self, flag):

self.a = flag   #实例变量

C.a = 1         #类变量赋值

C.b = 1         #类变量赋值

(2)类实例化

test1 = C(5)

test2 = C(6)

(3)查看结果

>>> test1.a

5

>>> test2.a

6

#实例变量根据实例的不同而有不同的值

>>> C.a

1

>>> C.b

1

>>> test1.b

1

>>> test2.b

1

#类变量在所有实例中都是一样的

>>> C.b = 10    #改变类变量值

>>> test1.b

10

>>> test2.b

10

#可以看到所有实例中的类变量都改变了

时间: 2024-10-20 14:29:17

python类变量和实例变量的区别的相关文章

Python 类变量与实例变量的区别和用途

假设有一个类Eg: class Eg: n = 'abcd' def __init__(self,name): self.name = name 两个实例a和b: a = Eg('a') b = Eg('b') 那么name就是实例变量,n就是类变量.在生成实例的过程中,类变量存储在类的内存位置中,而实例变量存储在实例内存位置中. 此时,打印两个实例的n值,实例会从类的内存位置去取值,所以值都为abcd: print(a.n , b.n) >>abcd abcd 当在a的实例中修改n的赋值时,

类变量和实例变量的区别

1.简介:       1.类变量也叫静态变量,也就是在变量前加了static 的变量:       2.实例变量也叫对象变量,即没加static 的变量: 区别在于:类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果:而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象: 例: 1 public class A{ 2 static int a = 0; //类变量 3 private int b = 0; //实力变量 4 } 5

【JAVA·转】类变量和实例变量的区别

类变量和实例变量的区别 类变量也叫静态变量,也就是在变量前加了static 的变量:实例变量也叫对象变量,即没加static 的变量:区别在于:    类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果:而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象:例:public class A{    static  int a = 0; //类变量    private int b = 0; //实力变量} public class B

Python类变量和实例变量区别

深入理解python类的实例变量和类变量 Python变量的本质:被赋值1 普通python变量(非类相关变量)很容易理解,在被赋值后即变量存在,可读可写2 Python类的变量(类变量和实例对象变量)以某种方式在某地方被赋值,即存在,可被读写2.1 Python类变量被赋值     (1)类的设计里,             class里def外,通过变量名能被赋值             def里通过类对象即类名字的点运算变量名可被赋值      (2)程序里             通过类

Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)

Python类中的变量有类变量和实例变量之分. 类变量:变量绑定在类上,同一个类之间的共享变量,类比于Java中的静态变量static 公有变量定义 Java 的定义方式 class Test{ public static class_variable = "123" } Python3 定义方式 class Test: class_variable = "123" 私有变量定义 Java 的定义方式 class Test{ private static class

python 类变量和实例变量

实例的属性存储在实例的__dict__中,类属性和方法存储在类的__dict__中.查找属性时,先检查特性,然后实例的__dict__,然后类的__dict__,然后基类.都不存在就会抛出异常. print '***************************************************' class AA: count = 0 def __init__(self): pass def AddCount(self): print 'id -> self.__class__

python 类变量与实例变量,可变对象与不可变对象的实践

class E: s='' d=[] def __init__(self): self.dd=[] aa=E() aa.d.append('abc') aa.dd.append('abc') aa.s+='abc' print(aa.d) print(aa.dd) print(aa.s) print('='*20) print(E.d) print(E.s) print('='*20) aa=E() aa.d.append('123') aa.dd.append('123') aa.s+='12

Java 局部变量、实例变量、类变量(静态变量)区别

1. 局部变量: 局部变量是类的方法中的变量: 2. 实例变量: 实例变量也是类中独立于方法之外的变量,不过没有static修饰,也叫 对象变量 3. 类变量(静态变量): 类变量是类中独立于方法之外的变量,用static 修饰,也叫 静态变量 4. 伪代码说明 public class Variable{ static int allClicks=0;//类变量 String str="hello world";//实例变量 public void method(){ int i =

Python类变量和成员变量使用中有哪些注意事项?

之前在用python开发一个项目,发现一个bug,就是同由一个类生成的两个实例之间的数据竟然会相互影响,这让我非常不解.后来联想到java的类有类变量也有实例变量,因此翻阅了相关资料,发现python也有类似的类变量和实例变量,比如下面的代码中: class A: x = 0 def __init__(self): self.y = 0 x就是类变量,y就是实例变量. 原则上是没有错的,但是实际用的时候就发现一些恶心的问题(也就是我找了三天的bug)...比如下面的代码: class A: x