我也想当个程序员

不停下就是进步

python之动态性

对于静态语言来说,如果函数内需要的是Animal类型,则传入的对象必须是Animal类型或者它的子类,不然是调用不了其run方法的。

但是python属于一种动态语言,传入的不一定钥匙Animal类型,只需要保证传入的对象有一个run()方法就可以了

比如:

class Animal(object):
    def run(self):
        print('animal is running')

class man(object):
    def run(self):
        print('man is running')
def runtwice(animal):
    animal.run()
a=Animal()
b=man()
c=runtwice(b)
print(a)

mananimal是不同的类,但是在调用runtwice函数时,参数指明了要用animal类型,但是我们传入的只是一个具有run方法的man类。然而这样也是可以实现的,这就是动态语言的鸭子类型,只要一个对象看起来像鸭子,跑起来像鸭子,那么它就可以被看作成鸭子。


阅读更多
个人分类: python学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭