Python的类变量和实例变量

类变量 在所有类的实例之前共享的值
实例变量 每个实例单独拥有的变量

#Exmple 1 
class Test(object):  
    num_of_instance = 0  
    def __init__(self, name):  
        self.name = name  
        Test.num_of_instance += 1  
  
if __name__ == '__main__':  
    print Test.num_of_instance   # 0
    t1 = Test('jack')  
    print Test.num_of_instance   # 1
    t2 = Test('lucy')  
    print t1.name , t1.num_of_instance  # jack 2
    print t2.name , t2.num_of_instance  # lucy 2
#Example 2
class Person:
    name="aaa"

p1=Person()
p2=Person()
p1.name="bbb"
print p1.name  # bbb
print p2.name  # aaa
print Person.name  # aaa

这里p1.name="bbb"是实例调用了类变量,这其实和上面第一个问题一样,就是函数传参的问题,p1.name一开始是指向的类变量name="aaa",但是在实例的作用域里把类变量的引用改变了,就变成了一个实例变量,self.name不再引用Person的类变量name了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 首先我们看一段代码以及输出: 看到这里可能有的同学会说是变量的作用域问题,事实上是实例变量和类变量的区别问题。 我...
    码农小杨阅读 848评论 0 0
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 2,411评论 1 6
  • 有几个同事要去国外做推广,这涉及到演讲,于是我换位思考了一下,如果是我去做这个招聘演讲的话,我会怎么做?更重要的是...
    塔希提的风阅读 1,059评论 4 21
  • 原来有你在的地方才是家 坚实的房 柔软的床 伴着渡梦乡 原来有你在的地方才是家 睡在你身旁 看你熟睡的模样 幸福不...
    Mint_1218阅读 284评论 0 0
  • 7月12日咖啡冥想 1、下午2时多坐出租车,一上车我就对师傅说外面好热,出租车师傅指着自己的仪表说外面45.6度,...

友情链接更多精彩内容