Python对象继承疑问:传入子类实例至期望父类的函数是否可行?
问题解答:传入子类实例能否正常运行?
- 类型兼容性没问题:在Python的类型提示规则里,子类
InstagramApp的实例完全可以传给标注为父类Phone类型的参数,这符合面向对象的里氏替换原则,本身是合法的。 - 代码实际会报错,但问题不在子类传入:当前代码里的
Phone.install()方法没有定义self参数,当通过实例调用install(app_name)时,Python会自动把实例作为第一个参数传入方法,导致参数数量不匹配(方法定义要求0个参数,实际传入了实例+app_name两个参数),不管传父类还是子类实例都会报错。 - 修正后即可正常运行:把
Phone类的install方法改成带self和app_name参数的定义:
这样修改后,传入class Phone: def install(self, app_name): ...InstagramApp的实例调用install_app就可以正常工作了。
内容的提问来源于stack exchange,提问作者Sion C
相关产品推荐
相关产品推荐

