史上最全Python面向工具编程
当我们传入Animal的实例时,run_twice()就打印出:
当我们传入Dog的实例时,run_twice()就打印出:
当我们传入Cat的实例时,run_twice()就打印出:
看上去没啥意思,可是细心想想,此刻,假如我们再界说一个Tortoise范例,也从Animal派生:
当我们挪用run_twice()时,传入Tortoise的实例:
你会发明,新增一个Animal的子类,不必对run_twice()做任何修改,现实上,任何依靠Animal作为参数的函数可能要领都可以不加修改地正常运行,缘故起因就在于多态。 多态的甜头就是,当我们必要传入Dog、Cat、Tortoise……时,我们只必要吸取Animal范例就可以了,由于Dog、Cat、Tortoise……都是Animal范例,然后,凭证Animal范例举办操纵即可。因为Animal范例有run()要领,因此,传入的恣意范例,只要是Animal类可能子类,就会自动挪用现实范例的run()要领,这就是多态的意思: 对付一个变量,我们只必要知道它是Animal范例,无需确切地知道它的子范例,就可以安心地挪用run()要领,,而详细挪用的run()要领是浸染在Animal、Dog、Cat照旧Tortoise工具上,由运行时该工具简直切范例抉择,这就是多态真正的威力:挪用方尽管挪用,不管细节,而当我们新增一种Animal的子类时,只要确保run()要领编写正确,不消管原本的代码是怎样挪用的。这就是闻名的“开闭”原则: 对扩睁开放:应承新增Animal子类; 对修改关闭:不必要修改依靠Animal范例的run_twice()等函数。 总结:担任可以把父类的全部成果都直接拿过来,这样就不必重零做起,子类只必要新增本身特有的要领,也可以把父类不得当的要领包围重写; 有了担任,才气有多态。在挪用类实例要领的时辰,只管把变量视作父类范例,这样,全部子类范例都可以正常被吸取; 旧的方法界说Python类应承不从object类担任,但这种编程方法已经严峻不保举行使。任何时辰,假如没有吻合的类可以担任,就担任自object类。 邪术要领在上面有提到除了init之外尚有iter,reverse的要领,这里就具体说下除了init初始化尚有哪些此外要领。
详细行使 1. doc 声名性文档和信息。Python自建,无需自界说。
2. init() 实例化要领,通过类建设实例时,自动触发执行。
3. module__ 和 __class module 暗示当前操纵的工具在属于哪个模块。 class 暗示当前操纵的工具属于哪个类。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |