Discuss / Python / 类变量和对象变量

类变量和对象变量

Topic source
     类变量是静态变量,也就是其实构造实例的前一步,类其实早就构造好了,不过不能直接用,是一个母版,其变量也存放在专用地方(内存的特定区域)
    对象变量,也就是实例变量,都是通过母版(类)构造出实例然后构造出来,它是动态的,随实例的销毁而销毁。(内存中任何可用区域)

class Student(object):
    count = 0

    def __init__(self, name):
        self.name = name
        Student.count+=1
print(Student.count)

可以看到,运行程序的过程中,并未建立任何对象,一样可以用类的变量,充分说明类(母版)是程序开始就直接构建在内存中的。

更深刻一点,其实母版(类)既然已经构造出来了,直接使用也是可以的,当它是个始祖对象也行。

class Student(object): __count = 0 def __init__(self, name): self.name = name Student.__count+=1 def get(self): return Student.__count

def run(x): inp = input('attr:') if hasattr(Student,inp): func = getattr(Student,inp) print(func()) else: setattr(Student,inp,lambda x:x+1) func = getattr(Student,inp) print(func(x))

if __name__ == '__main__': print(Student('a').get()) run(10)


  • 1

Reply