类方法是针对类定义的方法,再类方法中可以直接访问类属性,也可以调用其他类方法。
# -*- coding: utf-8 -*-
class Tool(object):
#创建类属性,用来记录创建对象的次数
count=0
@classmethod
def a(cls):
#对类属性做一个加1 的操作
Tool.count+=1
pass
def __init__(self,name):
self.name=name
Tool.a()
print(Tool.count)
结果:
1
静态方法
静态方法不需要调用类属性和类方法,也不需要调用实例属性和实例方法。
# -*- coding: utf-8 -*-
class Tool(object):
#创建类属性,用来记录创建对象的次数
count=0
@classmethod #告诉解释器这是一个实例方法
def a(cls):
#对类属性做一个加1 的操作
Tool.count+=1
pass
def __init__(self,name):
self.name=name
@staticmethod #告诉解释器是个静态方法
def s():
print('*'*50)
tool=Tool('锄头')
tool.s()
Tool.s()
print(Tool.count)
结果:
**************************************************
**************************************************
1
单例模式:也叫做设计模式,作用是让类创建的对象只有唯一一个实例
# -*- coding: utf-8 -*-
class Dog(object):
def __new__(cls,*args,**kwargs): #返回引用
print('11111')
return super().__new__(cls)
def __init__(self): #初始化对象,定义属性
print('2222')
dog=Dog()
print(dog)
xdog=Dog()
print(xdog)
结果:
11111
2222
<__main__.Dog object at 0x2ac7a95fe1d0>
11111
2222
<__main__.Dog object at 0x2ac7a95fe208>