python中类的静态成员

来源:互联网 发布:trunk端口的pvid 编辑:程序博客网 时间:2024/06/08 18:58

下午写了个获取交换机转发表的程序,里边每个交换机的转发表总是递增出现,也就是说下一个交换机的地址转发表必然包含上一个交换机的转发表,这显然不对。那就找愿意呗,因为数据是递增的,就想到是不是后边的交换机用了前边交换机的数据,就写了个程序实验一下:


class aaa:    a = []b = aaa()b.a.append('b')c = aaa()c.a.append('c')print b.a,c.a

输出结果:['b', 'c'] ['b', 'c']

很明显对象b和c用的是同一个数据空间,类似于java里类的静态成员,在java中如果定义类的字段时在前边加上static,这个字段就是静态成员,无论创建多少个对象,静态字段也只占用一份存储空间,但是在python中我们没有定义,字段缺是静态的,那么我们如果创建非静态的字段呢,看下边例子:

class aaa:    def __init__(self, cs):self.a = []self.a.append(cs)b = aaa('b')c = aaa('c')print b.a,c.a

输出结果:['b'] ['c']

可以看出在方法中定义一个字段,并在字段前加上self,此字段就是非静态的。

python中,在类里直接定义的字段属于这个类,只有在字段前加上self,字段才属于某个对象。



原创粉丝点击