python基础-单例模式、__new__方法、利用new构造对象
来源:互联网 发布:sql数据库设计 编辑:程序博客网 时间:2024/06/05 05:54
- _new_构造对象
- newinit执行顺序
- newclassmethod结合使用
- newstaticmethod结合使用
- 单例模式
_new_构造对象
# # class Person:# # def __init__(self):# # pass# ## # def __new__(cls, *args, **kwargs):# # return object.__new__(Person,*args,**kwargs)# ## # p = Person()##class Person: def __new__(cls, *args, **kwargs): print(cls,args,kwargs) return object.__new__(Person,*args, **kwargs)print("------通过new初始化对象-----")person = Person.__new__(Person)#如下方式不行TypeError: object() takes no parameters# person = Person.__new__(Person,1)#设置对象属性setattr(person,"name","safly")print(person.name)print("-通过new初始化对象")person =Person.__new__("safly")setattr(person,"name","safly")print(person.name)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py------通过new初始化对象-----<class '__main__.Person'> () {}safly-通过new初始化对象safly () {}saflyProcess finished with exit code 0
new、init执行顺序
class Person: def __init__(self,name,a): print("init",self) self.name = name self.a = a def __new__(cls, *args, **kwargs): print("new",cls,args,kwargs) return object.__new__(Person)person = Person("safly",a=8)print(person.name,person.a)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.pynew <class '__main__.Person'> ('safly',) {'a': 8}init <__main__.Person object at 0x02A815F0>safly 8Process finished with exit code 0
new、classmethod结合使用
class Person: @classmethod def createObj(cls): obj = cls.__new__(cls) obj.name = "safly" return objobj = Person.createObj()print(obj.name)
输出如下:
safly
new、staticmethod结合使用
class Person: @staticmethod def createObj(cls): obj = cls.__new__(cls) obj.name = "safly" return objobj = Person.createObj(Person)print(obj.name)
输出如下:
safly
单例模式
class Singleton: def __new__(cls, *args, **kw): if not hasattr(cls, '_instance'): cls._instance = object.__new__(cls, *args, **kw) return cls._instanceone = Singleton()one.a = 4print(one.a)two = Singleton()two.a = 3print(two.a)print(one.a)print(id(one))# 29097904print(id(two))
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py4334993905649939056Process finished with exit code 0
阅读全文
0 0
- python基础-单例模式、__new__方法、利用new构造对象
- 由单例模式看python类的__new__方法
- Python 3.6 单例模式 __new__实现
- python中类的学习:类属性,实例属性 __new__方法:单例模式
- 关于Java new对象构造方法执行顺序 解释恶汉单例模式死循环问题
- python实现单例模式__init__ __new__区别
- 使用 __new__ 实现 Python 的单例模式
- Python 单例模式详解 __new__, import ,__dict__,__metaclass__
- 单例模式VS静态方法VS每次new对象
- Python通过__new__实现单例设计
- 构造方法,匿名对象,单例模式,Static,内部类
- 面向对象基础续2(static关键字、理解main方法、代码块、构造方法私有化(单例模式)) .
- python中7种实现单例模式的方法:staticmethod、classmethod、类属性方法、__new__、装饰器、元类、名字覆盖
- python中的__new__()方法
- Python的__new__方法
- python中的__new__方法
- python __new__方法
- Java基础06:Static;单例设计模式;对象初始化;构造函数;
- 网络日记1:分层模型和以太网帧结构
- 迁移至Android3.0遇到一些问题
- 大数据挖掘:手把手教你分析头条小程序文章数据
- C#抽象类
- linux下使用crontab如何实现mysql数据库每天自动备份定时备份
- python基础-单例模式、__new__方法、利用new构造对象
- 土地经济学笔记第二部分
- 关于NFC P2P模式
- 自定义类型部分知识理解
- 解决phpmailer后的总结
- 'module' object has no attribute 'JSONField' Django REST framework
- Java
- 初学SpringMVC 小总结(有些术语说的不准确以后会加强,有些只是我个人理解,发现有问题可以告诉我)
- C#静态类