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

史上最全Python面向工具编程

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

行使get-set-del要领操纵私有成员

  1. class obj: 
  2.     def __init__(self,name): 
  3.         self.name=name 
  4.     def prin(self): 
  5.         print self.name 
  6.     __age = 18 
  7.     # 加上双下划线的就是私有变量,只能在类的内部会见,外部无法会见 
  8.     @classmethod 
  9.     # 假如要在类中挪用,起首挪用类要领 
  10.     def pri(cls): 
  11.         print cls.__age 
  12.         # 然后在行使 
  13.     @classmethod 
  14.     def set_age(cls,value): 
  15.         cls.__age = value 
  16.         return cls.__age 
  17.         # 这个用法就是改变__age的值 
  18.     @classmethod 
  19.     def get_age(cls): 
  20.         return cls.__age 
  21.         # 这个用法就是直接返回__age的值 
  22.     @classmethod 
  23.     def del_age(cls): 
  24.         del cls.__age 
  25.         # 这个用法就是直接删除__age的值 
  26.  
  27. print obj.get_age() 
  28. # 这里是直接挪用出__age的值  返回值18 
  29. print obj.set_age(20) 
  30. # 这里是直接改变__age的值  返回值20 
  31. obj.del_age() 
  32. # 这里是直接删除__age的值 

思索: 既然是私有变量,不让外部会见,为何有要在后头挪用又改变呢?由于可以对私有变量举办特另外检测,处理赏罚,加工等等。好比判定value的值,行使isinstance然后做if-else判定。

行使私有变量可以对内部变量举办掩护,外部无法改变,可是可以对它举办检测处理赏罚。

这里引申一下私有成员的掩护机制,行使__age对私有变量着实就是—>obj._obj__age的样子举办掩护,说白了你直接行使obj._obj__age就可以直接挪用内部私有变量age了。

Propety装饰器

把类的要领伪装成属性挪用的方法,就是把类内里的一个函数,酿成一个属性一样的对象~

一开始挪用类的要领要行使圆括号,此刻酿成了属性举办读取配置存储。

举个例子来声名:

常用的挪用要领

  1. class obj: 
  2.     def __init__(self,name,age): 
  3.         self.__name=name 
  4.         self.__age=age 
  5.         # 讲这些配置成私有变量 
  6.     def get_age(self): 
  7.         return self.__age 
  8.     def set_age(self,value): 
  9.         if isinstance(value,int): 
  10.             self.__age=value 
  11.         else: 
  12.             raise ValueError('非整数范例') 
  13.     def del_age(self): 
  14.         print 'delete over' 
  15. a = obj('langzi',18) 
  16. print a.get_age() 
  17. a.set_age(20) 
  18. print a.get_age() 

行使装饰器

  1. class obj: 
  2.     def __init__(self,name,age): 
  3.         self.__name=name 
  4.         self.__age=age 
  5.         # 把这些配置成私有变量 
  6.     @property 
  7.     def age(self): 
  8.         return self.__age 
  9.     @age.setter 
  10.     def age(self,value): 
  11.         if isinstance(value,int): 
  12.             self.__age=value 
  13.         else: 
  14.             raise ValueError('非整数范例') 
  15.     @age.deleter 
  16.     def age(self): 
  17.         print 'delete over' 
  18. a = obj('langzi',18) 
  19. # 行使这些装饰器,可以行使类与工具的要领直接挪用 
  20. print a.age 
  21. # 这里就是直接挪用返回age的值 
  22. a.age=20 
  23. # 这里就是直接行使setter把值转换 
  24. print a.age 
  25. del a.age 
  26. # 删除age 

虽然这种挪用要领有些贫困,每次都是一个一个去实例类与工具,有个越发简朴直观的要领。

越发减半的行使property()函数

(编辑:湖南网)

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

热点阅读