01-------------类-------------------
class Person(object):
age = 10;
def __init__(self, age):
if age is not None:
self.age = age
def speak(self):
print("hello")
person1 = Person(30)
print(person1.age)
person2 = Person(None)
print(person2.age)
------------------new------------------------------
class Dog(object):
def __new__(cls):
print("new")
return object.__new__(cls)
def __init__(self):
print("init")
def speak(self):
print("speak")
def __del__(self):
print("delete")
dog = Dog();
dog.speak()
---------------------------super----------------------
class Fish(object):
def __init__(self, name):
self.name = name
def swim(self):
print("{0}游泳很快".format(self.name))
def __del__(self):
print("delete")
class GoldFish(Fish):
def __init__(self, name):
super(GoldFish, self).__init__(name)
def run(self):
super(GoldFish, self).swim()
fish = GoldFish("金鱼")
2.设计模式###########简单工厂##############
#接口差异明显,分开实现操作简单
class Pay(object):
def __init__(self, money):
self.money = money
def pay(self):
print("snail金融:支付金额为{0}".format(self.money))
class WeiXin(object):
def __init__(self, money):
self.money = money
def pay(self):
print("支付金额为{0}".format(self.money))
class Zhifubao(object):
def __init__(self, money):
self.money = money
def pay(self):
print("支付金额为{0}".format(self.money))
channel = input("请选择支付方式:")
money = float(input("请输入支付金额:"))
if channel == "weixin":
WeiXin(money).pay()
elif channel == "zhifubao":
Zhifubao(money).pay()
else:
Pay(money).pay()
###################工厂方法######################
优势:不需要去关注具体类是如何实现的,用的时候导入类即可。
class Pay(object):
def __init__(self, money):
self.money = money
def pay(self):
print("snail金融:支付金额为{0}".format(self.money))
class WeiXin(object):
def __init__(self, money):
self.money = money
def pay(self):
print("微信支付金额为{0}".format(self.money))
class Zhifubao(object):
def __init__(self, money):
self.money = money
def pay(self):
print("支付宝支付金额为{0}".format(self.money))
class PayFactory(object):
def create(self, money):
return Pay(money)
class WeiXinFactory(object):
def create(self, money):
return WeiXin(money)
class ZhifubaoFactory(object):
def create(self, money):
return Zhifubao(money)
------
from method import PayFactory
factory = PayFactory()
pay = factory.create(100)
pay.pay()
from method import WeiXinFactory
factory = WeiXinFactory()
pay = factory.create(1000)
pay.pay()
from method import ZhifubaoFactory
factory = ZhifubaoFactory()
pay = factory.create(10000)
pay.pay()
------反射抽象工厂
model = input("请输入模块名称")
classA = input("请输入类名称")
money = input("请输入钱数")
model = __import__(model)
object = getattr(model, classA)(money)
print(dir(model))
print(object)
object.pay()
==============单例模式==============
class SingleTone(object):
def __new__(cls, *args, **kw):
if not hasattr(cls, '_instance'):
cls._instance = super(SingleTone, cls).__new__(cls, )
return cls._instance
single1 = SingleTone()
single2 = SingleTone()
print(id(single1))
print(id(single2))