from abc import ABCMeta, abstractmethod

NOT_IMPLEMENTED = "You should implement this."

class AbstractCar:
__metaclass__ = ABCMeta @abstractmethod
def drive(self):
raise NotImplementedError(NOT_IMPLEMENTED) class Car(AbstractCar):
def drive(self):
print("Car has been driven!") class Driver(object):
def __init__(self, age):
self.age = age class ProxyCar(AbstractCar):
def __init__(self, driver):
self.car = Car()
self.driver = driver def drive(self):
if self.driver.age <= 16:
print("Sorry, the driver is too young to drive.")
else:
self.car.drive() driver = Driver(16)
car = ProxyCar(driver)
car.drive() driver = Driver(25)
car = ProxyCar(driver)
car.drive()

  

摘自:wiki

最新文章

  1. Maven打包生成可运行bat/sh脚本文件
  2. shell 条件判断
  3. 一个简单的js实现倒计时函数
  4. SQL 会议消费记录统计
  5. .NET跨平台实践:用C#开发Linux守护进程(转)
  6. Oracle GoldenGate: 使用宏
  7. Java学习一
  8. microsoft azure 速度测试网址
  9. Java的基础概念
  10. Ubuntu---2
  11. openjudge(四)
  12. shell 查找与替换
  13. telnet mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host问题的解决
  14. 【转】WPF Template模版之DataTemplate与ControlTemplate(一)
  15. .Net Core创建Docker镜像
  16. Laravel线上布暑到linux的问题汇总
  17. .NET 使用 RabbitMQ 图文简介
  18. 04: nginx部署vue
  19. 获取DataView行数据
  20. C++进阶3.字节对齐 联合

热门文章

  1. ⌈洛谷4735⌋⌈BZOJ3261⌋最大异或和【可持久化01Trie】
  2. PyCharmMarkdown插件的方法
  3. 构建FTP服务
  4. 清理XFCE4卸载残留
  5. Python数据结构之栈的实现
  6. js click 与 onclick 事件绑定,触发与解绑
  7. html 网页背景图片根据屏幕大小CSS自动缩放
  8. Linux列字符替换
  9. HDU 4770 Lights Against Dudely(暴力+状压)
  10. Ajax和Json的介绍(一)