单例模式 继承
基础
https://www.cnblogs.com/Eva-J/articles/7293890.html
进阶
https://www.cnblogs.com/Eva-J/articles/7351812.html
# 代码的规范没有建立起来 from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): # 抽象类 @abstractmethod # 如果我必须要实现pay方法,那么我需要给pay加一个装饰器 def pay(self): pass # 创建的这个pay并没有内容, # 之所以写一个pay是为了提醒所有子类你一定要实现一个pay方法 @abstractmethod def back(self): pass class Wechatpay(Payment): def __init__(self,name,money): self.name = name self.money = money def pay(self): print(‘%s通过微信支付了%s元‘%(self.name,self.money)) class Alipay(Payment): def __init__(self,name,money): self.name = name self.money = money def pay(self): print(‘%s通过支付宝支付了%s元‘%(self.name,self.money)) class ApplePay(Payment): def __init__(self, name, money): self.name = name self.money = money def pay(self): print(‘%s通过apple pay支付了%s元‘ % (self.name, self.money)) def back(self): print(‘退款‘) # 归一化设计 def pay(person): person.pay() ApplePay(‘alex‘,20000)
抽象类 :Payment这个类是一个抽象类 抽象类做什么事儿 : 约束所有的子类 必须实现被abstractmethod装饰的方法名 给我们的代码指定规范 特点 : 抽象类不能实例化,只是作为具体的类的规范 抽象类长什么样 class 类名(metaclass = ‘ABCMeta‘): @abstractmethod def 规定的方法名(self):pass @abstractmethod def 规定的方法名(self):pass @abstractmethod def 规定的方法名(self):pass
类只能单继承,所以抽象类 只能是所有的子类只有一个规范 # java 当中没有多继承的类 # 接口 接口可以多继承 # 在python里没有接口的专用语法 # 我们只是通过类的多继承 模仿接口的效果 from abc import ABCMeta,abstractmethod class NormalAnnimal(metaclass=ABCMeta): @abstractmethod def eat(self):pass @abstractmethod def drink(self):pass class FlyAnimal(metaclass=ABCMeta): @abstractmethod def fly(self):pass class SwimAnimal(metaclass=ABCMeta): @abstractmethod def swim(self):pass class WalkAnimal(metaclass=ABCMeta): @abstractmethod def walk(self):pass class Frog(NormalAnnimal,SwimAnimal,WalkAnimal): def eat(self): pass class Tiger(NormalAnnimal,SwimAnimal,WalkAnimal):pass class Swan(NormalAnnimal,FlyAnimal,SwimAnimal,WalkAnimal):pass class Parrot(NormalAnnimal,FlyAnimal,WalkAnimal): def talk(self): pass # 抽象类 是单继承的规范 # 接口类 是多继承的规范 # java # 接口里面定义的所有的方法 都不能写具体的实现 pass # 抽象类里面定义的所有的抽象方法 内部是可以完成一些简单的代码
namedtuple
from collections import namedtuple Course = namedtuple(‘Course‘,[‘name‘,‘price‘,‘period‘]) python = Course(‘python‘,20000,‘6 month‘) print(python.name) print(python.price) print(python.period) print(type(python)) print(python)
---->
python
20000
6 month
<class ‘__main__.Course‘>
Course(name=‘python‘, price=20000, period=‘6 month‘)
原文:https://www.cnblogs.com/qj696/p/12326495.html