本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

Python基础-面向对象(2)

一、__new__方法

__new__方法是用来控制这个类创建对象的执行逻辑。这个方法是在对象还没有创建之前就会执行的。而__init__方法是在对象创建完毕后才执行。比如看下以下代码的执行顺序:

class Person(object): # __new__方法的参数不是self,而是cls,代表当前这个类 def __new__(cls,*args,**kwargs): print('new方法执行') # 一定要返回对象,不然就不会创建对象 # object的__new__不接收参数,因此__new__方法不能传入*args和**kwargs参数 return super(Person,cls).__new__(cls) # __init__方法是在对象被创建完毕后进行一些初始化的 # 因此这时候是self,因为这个对象已经存在了 def __init__(self): print('init方法执行') # __del__方法是在这个对象被销毁的时候调用的 def __del__(self): print('del方法执行') p = Person() # 打印顺序 # 1. new方法执行 # 2. init方法执行 # 3. del方法执行

二、Python创建单例对象:

单例的意思是:在程序中,某个类的对象只有一个。这种需求其实很常见,比如一个项目中有一个配置文件,那么可以通过定义一个Config的类来操作配置信息,但是配置信息在整个项目中其实只需要一份就够了,这时候就可以使用到单例模式了。

# 单例模式 class Person(object): __instance = None def __new__(cls,*args,**kwargs): if not cls.__instance: cls.__instance = super().__new__(cls) return cls.__instance p1 = Person() p2 = Person() print(id(p1)) print(id(p2))

1545人已阅读,今天你学习了吗?

添加新回复