美文网首页
类内全局变量,共有私有,构建析构

类内全局变量,共有私有,构建析构

作者: wyude | 来源:发表于2016-10-30 00:14 被阅读0次

竟然面向对象,那就即使不会面向对象也要尽量面向对象
今天小写一会python,总结这么一点点。


class classA:
    publicCnt=0;#public全局变量 # @ 20161101今天知道了,也就是static才在这里定义,非共享的直接self.var就可以了
    __privateCnt=0;#前面两个横杠就private变量了
    __name="";
#需要注意的是,在Python中,变量名类似__xxx__的,
#也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,
#特殊变量是可以直接访问的,不是private变量,所以,不能用__name__、__score__这样的变量名
    def __init__(self,nameTmp):#默认的构建函数就是这个名字,函数前面加双杠也代表私有
        self.__class__.publicCnt +=1;###快来看啊,加了__class__访问,这个全局变量立马就变成static变量了,成为这个类共享的
        self.__privateCnt +=1;###不加__class__就是普通全局变量了,只属于这个对象的
        self.__name=nameTmp;
        print('init publicCnt',self.__name,self.publicCnt);
        print('init privateCnt',self.__name,self.__privateCnt);
    def __del__(self):#默认的析构函数就是这个名字
        self.__class__.publicCnt -=1;
        self.__privateCnt -=1;
        print('del publicCnt',self.__name,self.publicCnt);
        print('del privateCnt',self.__name,self.__privateCnt);
    def function(self):
        print('just a function');

if __name__=='__main__':
                  a=classA('a');
                  b=classA('b');
                  c=classA('c');
                  d=classA('d');
                  e=classA('e');
看了下输出顺序,不是很懂它的析构顺序怎样,
据说是字典顺序A-Za-z,但这个看着明显不像,
其实就是还不知道是什么字典顺序。
init publicCnt a 1
init privateCnt a 1
init publicCnt b 2
init privateCnt b 1
init publicCnt c 3
init privateCnt c 1
init publicCnt d 4
init privateCnt d 1
init publicCnt e 5
init privateCnt e 1
del publicCnt b 4
del privateCnt b 0
del publicCnt d 3
del privateCnt d 0
del publicCnt e 2
del privateCnt e 0
del publicCnt c 1
del privateCnt c 0
del publicCnt a 0
del privateCnt a 0

相关文章

  • 类内全局变量,共有私有,构建析构

    竟然面向对象,那就即使不会面向对象也要尽量面向对象今天小写一会python,总结这么一点点。

  • python 13面向对象

    构造函数 析构函数 私有 类方法 静态方法 属性方法

  • 类和实例

    类的特征 公有方法私有方法属性私有变量析构函数:(析构函数与构造函数相反,当对象结束其生命周期,如对象所在的函数已...

  • Python 之路06 - 面向对象

    本节大纲: 特性:class、object 封装 继承 多态语法\属性\方法构造函数\析构函数私有方法\私有属性类...

  • C++总结

    函数 为什么基类的析构函数用虚函数 在实现多态时,当用基类操作派用类,在析构时防止只析构基类而不析构派生类的状况发...

  • swift3语法(十二)

    析构过程 析构器析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标...

  • Swift5.1构造过程&析构过程

    14.构造过程 构造过程 15.构析过程 析构过程原理析构过程:析构器只适⽤于类类型,当一个类的实例被释放之前,析...

  • C++面向对象(下) Week5——Boolan

    1.Composition下的构造和析构 构造由内而外 析构由外而内 2.Inheritance 下的构造和析构 ...

  • Swift - 析构过程

    析构过程 析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字 deinit 来标示...

  • 13-Swift析构过程(Deinitialization)

    析构器只适用于类,当一个类的实例被释放之前,析构器会被立即调用。析构器用deinit关键字来标示。 一、析构过程原...

网友评论

      本文标题:类内全局变量,共有私有,构建析构

      本文链接:https://www.haomeiwen.com/subject/pnbeuttx.html