加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

史上最全Python面向工具编程

发布时间:2019-03-26 23:11:22 所属栏目:建站 来源:浪子燕青
导读:面向工具编程和函数式编程(面向进程编程)都是措施计划的要领,不外稍有区别。 面向进程编程: 1. 导入各类外部库 2. 计划各类全局变量 3. 写一个函数完成某个成果 4. 写一个函数完成某个成果 5. 写一个函数完成某个成果 6. 写一个函数完成某个成果 7. 写一

当我们传入Animal的实例时,run_twice()就打印出:

  1. run_twice(Animal()) 
  2. 运行功效: 
  3. Animal is running... 
  4. Animal is running... 

当我们传入Dog的实例时,run_twice()就打印出:

  1. run_twice(Dog()) 
  2. 运行功效: 
  3. Dog is running... 
  4. Dog is running... 

当我们传入Cat的实例时,run_twice()就打印出:

  1. run_twice(Cat()) 
  2. 运行功效: 
  3. Cat is running... 
  4. Cat is running... 

看上去没啥意思,可是细心想想,此刻,假如我们再界说一个Tortoise范例,也从Animal派生:

  1. class Tortoise(Animal): 
  2.     def run(self): 
  3.         print 'Tortoise is running slowly...' 

当我们挪用run_twice()时,传入Tortoise的实例:

  1. run_twice(Tortoise()) 
  2. 运行功效: 
  3. Tortoise is running slowly... 
  4. Tortoise is running slowly... 

你会发明,新增一个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. __init__ :      结构函数,在天生工具时挪用 
  2. __del__ :       析构函数,开释工具时行使 
  3. __repr__ :      打印,转换 
  4. __setitem__ :   凭证索引赋值 
  5. __getitem__:    凭证索引获取值 
  6. __len__:        得到长度 
  7. __cmp__:        较量运算 
  8. __call__:       挪用 
  9. __add__:        加运算 
  10. __sub__:        减运算 
  11. __mul__:        乘运算 
  12. __div__:        除运算 
  13. __mod__:        求余运算 
  14. __pow__:        幂 

详细行使

1. doc

声名性文档和信息。Python自建,无需自界说。

  1. class Foo: 
  2.     """ 描写类信息,可被自动网络 """ 
  3.     def func(self): 
  4.         pass 
  5. # 打印类的声名文档  
  6. print(Foo.__doc__) 

2. init()

实例化要领,通过类建设实例时,自动触发执行。

  1. class Foo: 
  2.     def __init__(self, name): 
  3.         self.name = name 
  4.         self.age = 18 
  5. obj = Foo(jack') # 自动执行类中的 __init__ 要领 

3. module__ 和 __class

module 暗示当前操纵的工具在属于哪个模块。

class 暗示当前操纵的工具属于哪个类。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读