单例模式:该模式的主要目的是确保某一个类只有一个实例存在
class singleton:
name='sing'
借助第三方变量
__instance=None;
def __new__(cls, *args, **kwargs):
if cls.__instance == None:
cls.__instance= object.__new__(cls);
return cls.__instance;
else:
return cls.__instance;
def __init__(self,score):
self.score=score;
s=singleton(60);
setattr(singleton,'name','oop')
print(singleton.name)
print(s.__getattribute__('score'))
s.__setattr__('score2',70)
print(s.__getattribute__('score2'))
print('getattr(s,score2)',getattr(singleton,'name'))
print(' hasattr(s,score2)', hasattr(s,'score2'))
print(id(s))
s1=singleton();
print(id(s1))
a,b=10,5;
c=a;
a=b;
b=c;
b,a=a,b;
print(a,b)
计算器
class Operation:
def __new__(cls):
pass
def GetResult(self,numA, numB):
print('计算2操作数的运算结果')
class OpeartionAdd(Operation):
def __new__(cls):
return object.__new__(cls);
return Operation.__new__(cls)
def GetResult(self,numA,numB):
return numA+numB
class OperationSub(Operation):
def GetResult(self,numA,numB):
return numA-numB
class OperationMul(Operation):
def GetResult(self,numA,numB):
return numA*numB
class OperationDiv(Operation):
def GetResult(self,numA,numB):
return numA//numB
class OperationFactory(object):
不同的参数创建不同的对象的 函数
def create_class(self,fu):
if fu == '+':
q = OpeartionAdd();
elif fu == '-':
q = OperationSub();
elif fu == '*':
q = OperationMul();
elif fu == '/':
q = OperationDiv();
return q;
if __name__== '__main__':
工厂对象
factory=OperationFactory();
numA=int(input('请输入第一个操作数'))
numB=int(input('请输入第二个操作数'))
fu = input('请输入运算符:')
q代表 由 工厂创建出来的一个计算器
q=factory.create_class(fu)
print('计算结果:',q.GetResult(numA, numB))