Python中的类变量、实例变量、局部变量

Python013

Python中的类变量、实例变量、局部变量,第1张

类体内,所有函数外定义。

所有实例对象共享。

只有通过类名调用时才能修改,通过实例调用时无法修改。

假设某类变量名为“name",如果用该类的某个实例x来为name赋值:x.name = 'xxx',实质是为该实例新定义了一个变量name。且之后无法再通过该实例调用类变量name了。因为使用实例调用某名为“xxx”变量时,若该实例没有名为“xxx”的实例变量,则会去调用名为“xxx”的类变量;若有该名称的实例变量,则该实例无法再直接调用该名称对应的类变量。因此也不推荐通过实例来调用类变量。

即:通过类实例修改类变量的值时,实际是在定义新的与类变量同名的实例变量。

类体内,某函数(一般是__ init __ ())内定义。 “self.变量名”

因为是属于某个具体实例的,因此不能通过类名访问。

如果不在__ init __ () 中调用(该函数会在创建实例时自动调用一次),则只有调用该实例中定义目标实例变量的那个函数后,才能使用目标实例变量。因此最好在__ init __ () 中定义实例变量。

类体内,某函数内定义。

直接在函数内用“变量名=值”的方式进行定义。

函数执行完毕后,该局部变量即被销毁。

1234def aaa():s = 5return sprint aaa()

或者:

12345def aaa():global ss = 5aaa()print s

要在函数外部访问函数的内部变量,要么使用return将其返回到外部,要么用global定义为全局变量。推荐前一种。

def只是定义函数,你还没有调用和执行该函数。此外,要在控制台输出,你可以在函数内部写上print s+3 ,然后调用函数aaa()。

或者定义一个类:

1234class aaa:s = 5b = aaa #初始化一个类的实例print b.s #当然,你也可以直接使用aaa.s