• 构造器以及解构器


    如果说类是一种数据结构的定义,那么实例则是声明了这种类型的变量,换句话说,实例是有生命的类。

    有一点可以说明一下,在python2.2版本之前,当你定义一个类的时候,你并没有创建一个新的类,而仅仅是创建了一个类对象。

    在2.2版本之后,当你定义了一个新式类之后,你就已经创建了一个新的类型。

    1.__init__()”构造器“方法

    在python中,没有实例,方法是不能被调用的。

    当类被调用,实例化的第一步是创建类对象。一旦对象创建了,python检查是否实现了__init__()方法。

    默认情况下,如果没有定义(或覆盖)特殊方法__init__(),对实例不会添加任何特别的操作。

    任何所需的特定操作都需要实现__init__()方法,如果类没有实现则返回它的对象,实例化过程完毕。

    如果__init__()已经被实现,那么它将被调用,实例对象作为第一个参数(self)被传进去,像标准方法一样被调用。

    调用类时,传进的任何参数都交给了__init__().

    2.__del__()"结构器"方法

    python没有提供任何内部机制来跟踪一个类有多少个实例被创建了,或者记录这些实例是些什么东西。

    最好的方式是使用一个静态成员来记录实例的个数,靠保存它们的引用来跟踪实例对象是很危险的。

    class Instct(object):
        count = 0  #一个类的属性
        def __init__(self):   #增加count
            Instct.count += 1
        def __del__(self):    #减少count
            Instct.count -= 1
        def howMany(self):   #返回count
            return Instct.count
    
    a = Instct()
    b = Instct()
    print(a.howMany())
    print(b.howMany())
    
    print(a.howMany())
    print(b.howMany())
    del a
    del b
    print(Instct.count)
    
    #执行结果
    2
    2
    2
    2
    0
  • 相关阅读:
    IO操作之BIO、NIO、AIO
    IO之Socket网络编程
    this.getClass()和super.getClass()得到的是同一个类
    经济增长的背后
    SVN分支创建与合并
    .net类库里ListView的一个BUG
    VS2010调试技巧
    用C#代码编写的SN快速输入工具
    请教如何改善C#中socket通信机客户端程序的健壮性
    利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/7811930.html
Copyright © 2020-2023  润新知