python 类变量实例(成员)变量局部变量小结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 类变量实例(成员)变量局部变量小结相关的知识,希望对你有一定的参考价值。

假设我们有这样一个py文件:  

def fun():
print ‘dada‘
return u‘welcome‘


class Base:
a = fun()
def __init__(self,c):
self.b = u‘你好‘
print self.a
base1 = Base()

(1)首先,很容易看出a为类变量,b为实例变量,c为局部变量。
(2)再讲解下当我们执行这个py文件时,内存是怎么分配的。
  1.   首先回加载func方法到内存【类比 java,暂时认为在方法区】
  2.   由于类有自己的存储空间,因此加载Base类到内存,同时加载__init__【暂时认为在方法区】
  3.      创建base1实例,为其分配内存,同时执行__init__方法

     技术分享

  (3)再讲解类变量,实例变量如何调用

  1.   通过上面的存储图可看出,a是由Base调用,b是由base1调用,那么base1能否调用a呢? 分为两种情况:(1)例如print base1.a【这时输出的就是a的值】         【原因:猜想是先从base1的存储区查找a,没有的话就去Base区查找,然后找到了,最后输出】 。(2)base1.a = ‘nihao‘,这时其实是为base1实例创建了一        个实例变量a,与之前的类变量a无关。
  2.      因此,无论在类内外,当调用类变量a时,就用Base.a,当调用实例变量b时,就使用base1.b

 

 


    

  

 

 

 

  

 















以上是关于python 类变量实例(成员)变量局部变量小结的主要内容,如果未能解决你的问题,请参考以下文章

Java:成员变量局部变量和静态变量

java中静态成员变量、实例变量、局部变量何时创建、何时销毁?

成员变量(实例变量)&局部变量&静态变量(类变量)的区别

Java中静态变量(类变量)实例变量局部变量和成员变量

Java中静态变量(类变量)实例变量局部变量和成员变量

成员变量实例变量局部变量类变量(静态变量)详解