Python中,什麼是鴨子類型(duck typing)🦆

描述

當看到一隻鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那麼這隻鳥就可以被稱爲鴨子🦆。”

特性

  • 關注點在對象的行爲或接口,而不是類型
  • 比如 file, StringIO, socket對象 都支持 read/write 方法(file like object)
  • 比如定義了 __iter__ 魔術方法的對象都可以用 for 迭代

示例

class Duck:
  def quack(self):
    print("gua gua")

class Person:
  def quack(self):
    print("I am a person ,But I can gua gua too")

def in_the_forest(duck):
  duck.quack()

def game():
  donald = Duck()
  john = Person()
  in_the_forest(donald)
  in_the_forest(john)
  print(type(donald))
  print(isinstance(donald, Duck))

game()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章