内置函数(魔法方法)
凡是在类内部定义以——开头——结尾的方法,都是类的内置方法,也称之为魔法方法。
__init__:在调用类时自动触发,调用该类的时候,内部会通过__new__产生一个新的对象。
__new__:在调用new时自动触发,通过产生的对象自动调用__init__
__getattr__:在对象.属性获取属性时,若属性没有时触发。
__getattribute__:在对象.属性时,无论属性有没有都会触发。
__setattr__:当对象.属性=属性值,添加或修改属性时触发。
__call__:在调用对象+()时触发。
__str__:打印对象时触发,注意,必须要有一个字符串返回值
__getitme__:对象通过对象[key]获取值时触发
__settime__:通过对象[key]设置值时触发
单例模式:
在确定类中的属性与方法不变时,需要反复调用,
产生不同的对象,会产生不同的内存地址,造成资源的浪费。
让所有的类实例化时,指向同一个内存地址,称之为单例模式。--》无论产生多个对象,都会指向单个实例。
作用:节省内存空间
单例模式:
1.通过classmethod
2.通过装饰器
3.通过——new__实现
4.通过导入模块
5.通过元类实现
栗子
通过classmethod实现
import settings
class Mysql:
__instance = None
def __init__(self,host,port):
self.host =host
self.port =port
class Abcd:
__instance =None
def __init__(self,name,age):
self.name = name
self.age = age
def __new__(cls, *args,**kwargs):
if not cls.__instance:
#调用object.__new__产生一个空对象
cls.__instance = object.__new__(cls)
return cls.__instance
作者:刘浩
出处:http://home.cnblogs.com/u/cyfdtz/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。