#1. __new__方法
# 创建对象(__new__) =》 初始化对象(__init__)
class Car(object):
#__new__方法是类方法
def __new__(cls,*args,**kwargs):
print('new method')
# 一定要切记,必须要在new方法后面返回当前这个类的对象
#因为__new__方法是来创建对象的
return super(Car,cls).__new__(cls,*args,**kwargs)
def __init__(self):
print('car init method')
car=Car()
print(car)
#2.单例设计模式:某个类或者模型在整个程序运行期间最多只能有一个对象被创建
#我们可以判断,如果User这个类没有创建过对象,那么就创建一个对象保存在某个地方
#以后如果要再创建对象,我会去判断,如果之前已经创建了一个对象,那么就不再创建
#而是直接把之前那个对象返回回去
#__new__方法创建对象
class User(object):
__instance = None
def __new__(cls,*args,**kwargs):
if not cls.__instance:
cls.__instance = super(User,cls).__new__(cls)
return cls.__instance
def __init__(self,name):
self.name = name
user1 = User('luobin')
user2 = User('fjq')
#判断两个对象是否属于同一个对象,通过调用id()来查看他们的id
#若一样,则两个对象就是同一个对象。
print(id(user1))
print(id(user2))
python中的__new__方法和单例设计模式
最新推荐文章于 2024-04-15 14:35:44 发布