Discuss / Python / 最后静态动态的例子,只是重新定义了一个Timer类吧

最后静态动态的例子,只是重新定义了一个Timer类吧

Topic source

汪王先森

#1 Created at ... [Delete] [Delete and Lock User]
   对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是**Animal类型或者它的子类**,否则,将无法调用run()方法。

class Timer(object):
    def run(self):
        print('Start...')

我感觉这里就是重新定义了一个Timer类,然后定义了一个run的方法,没有牵扯到继承或传入吧?

新手勿见笑,望牛人解惑

葛斯特

#2 Created at ... [Delete] [Delete and Lock User]

我认为这主要是因为在python中,不管是定义变量还是函数参数都不需要事先定义类型,变量类型是在运行的时候才能确定的,所以它就不可能事先检查类的继承关系,只能在运行时通过是否可以运行代码中所调用的父类的方法或者变量来判断继承关系;而在java中不管是定义变量、函数或者类参数都必须事先定义类型,所以类的继承关系在编译时就确定了,如果代码中不按照继承关系调用,则会在编译时就会报错,压根无法运行。


  • 1

Reply