类的内置方法(魔法方法):

凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法。

类的内置方法,会在某种条件满足下自动触发。

内置方法如下:

__new__:在__init__触发前,自动触发。调用该类时,内部会通过__new__产生一个新的对象。

__init__:在调用类时自动触发。通过产生的对象自动调用__init__()




单例模式

import settings


# 通过classmethod
class MySQL:

# 一个默认值,用于判断对象是否存在, 对象不存在证明值是None
# __instance是类的属性,可以由类来调用
__instance = None # ---》 执行到代码的57行 ---》 obj
# __instance = obj

def __init__(self, host, port):
self.host = host
self.port = port

@classmethod
def singleton(cls, host, port): # 单例方法 ---》 类方法

# 判断__instance中若没有值,证明没有对象
if not cls.__instance:
# 产生一个对象并返回
obj = cls(host, port)
# None ---> obj
cls.__instance = obj

# 若__instance中有值,证明对象已经存在,则直接返回该对象
return cls.__instance

def start_mysql(self):
print('启动mysql')

def close(self):
print('关闭mysql')


obj1 = MySQL.singleton(settings.HOST, settings.PORT)
print(obj1)
obj2 = MySQL.singleton(settings.HOST, settings.PORT)
print(obj2)
12-15 02:51