欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python中的一些特殊方法以及单例对象

程序员文章站 2022-06-03 19:06:36
...

__str__(self)方法

  • 该方法写在类的定义之中,用于描述对象的基本信息。
  • 该方法中必须有return,其内容就是调用后返回的结果。
  • 该方法不像普通方法的调用那样通过 instancename.__str__()来调用,而是print(instancename)时打印出该方法return的内容。

__del__(self)方法

  • 该方法写在类的定义之中,是对象在被销毁时自动调用的方法。
  • 销毁会发生在:对象引用个数变为了0或者程序运行结束了。
  • sys.getrefcount(instancename)返回的就是对象引用个数加1之后的结果。

__new__(cls)方法

  • 该方法位于object类中,作用是创建对象。在子类中定义该方法时一定要在最后加上一句调用object类中该方法的语句:return object.__new__(cls)。
  • 与c++中的构造方法不同,Python中没有真正意义上的构造方法。在实例化一个类时,实际上调用了两个函数:首先是类名传给__new__(cls)方法创建对象,并返回对象的引用;然后调用__init__(self)方法对实例进行初始化,传入的self是创建对象的引用;最后一步是将初始化后的对象的引用返回给一个指定的变量。

单例对象

单例对象是指无论实例化多少次都只有唯一的一个实例存在。要做到这一点就需要重写上面所说到的__new__(cls)方法。下面给出一个例子:

class single_instance(object):
    __instance = None
    def __new__(cls):
        if cls.__instance == None
            cls.__instance = object.__new__(cls)
            return cls.__instance
        else
            return cls.__instance