想摸妹妹大腚 发表于 2020-6-12 11:15:13

鸭子类型其实就是多态!可以这么说吗?

鸭子类型:
class Animal:
    def call(self):
      pass

class Cat(Animal):
    def call(self):
      print('cat call maomao~~~')


class Dog(Animal):
    def call(self):
      print('dog call wangwang~~~')
end

def func test_duck(duck):
    duck.call()


test_duck(Cat())    #Cat()实例在执行
test_duck(Dog())    #Dog()实例在执行
多态:
class A:
        def func(self):
                print("调用了我......")
class B:
        def func(self):
                print("调用了我......")
a = A()
a.func()
b=B()
b.func()

Twilight6 发表于 2020-6-12 11:46:53

本帖最后由 Twilight6 于 2020-6-12 11:48 编辑


多态:
指的是一类事物有多种形态

鸭子类型:
Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’

我觉得应该不行吧,不过应该可以说鸭子类型是多态的一种表现吧

heidern0612 发表于 2020-6-12 11:47:02

不太准确。

鸭子类型属于调用同一种功能,或者说鸭子函数可以接收任何类型的参数,都可以使用鸭子函数中的功能。

而多态更倾向于继承。

想摸妹妹大腚 发表于 2020-6-12 15:17:41

Twilight6 发表于 2020-6-12 11:46
多态:




恩恩好的谢谢
页: [1]
查看完整版本: 鸭子类型其实就是多态!可以这么说吗?