8.5 你可能并不懂python的鸭子类型 - 图1

8.5.1 很多人都把眼光放在了面向对象上

python同时支持鸭子类型和面向对象, 很多人把眼光放在了面向对象上。

8.5.2 python用法简单的根本 - 鸭子类型(基于协议编程)

  1. from collections.abc import Iterable
  2. class Company:
  3. def __init__(self, employee_list):
  4. self.employee = employee_list
  5. def __iter__(self):
  6. return iter(self.employee)
  7. def __getitem__(self, item):
  8. return self.employee[item]
  9. if __name__ == "__main__":
  10. company = Company(["tom", "bob", "jane"])
  11. if isinstance(company, Iterable):
  12. print("company是iterable类型")
  13. for item in company:
  14. print (item)
  15. a = []
  16. if isinstance(a, Iterable):
  17. print("yes")