python简单问题求解 请问定义在类中int外的变量a和定义在int中的变量b有何区别?

class A(object):
a='a string'
def __init__(self):
self.b='A string'

请问定义在类中int外的变量a和定义在int中的变量b有何区别?

a是类变量,被类的所有对象共享,a一旦通过类的引用发生改变,则类的所有对象中的a也会发生变化,且可以通过类而不是对象来引用a。但当通过类的一个对象引用改变a时,此改变不会传递到其它对象和类中。比如:
class A(object):
====a='a string'
====def __init__(self,s):
========self.b=s

##可通过类引用a
print(A.a)

##a(a所引用的对象)被所有对象共享
a1=A('a1')
a2=A('a2')
print(id(a1.a)==id(a2.a))

##a通过类的引用发生改变,则类的所有对象中的a也会发生变化
A.a='abc'
print(a1.a,a2.a)

##通过类的一个对象引用改变a,此改变不会传递到其它对象和类中
a1.a='250'
print(A.a,a1.a,a2.a)
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-24
前者还可以通过A.a的方式引用,b则不能
相似回答