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

史上最全Python面向工具编程

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

13. author作者信息

  1. __author__ = "Jack" 
  2. def show(): 
  3.     print(__author__) 
  4. show() 

14. slots

Python作为一种动态说话,可以在类界说完成和实例化后,给类可能工具继承添加随意个数可能恣意范例的变量或要领,这是动态说话的特征。譬喻:

  1. def print_doc(self): 
  2.     print("haha") 
  3.  
  4. class Foo: 
  5.     pass 
  6.  
  7. obj1 = Foo() 
  8. obj2 = Foo() 
  9. # 动态添加实例变量 
  10. obj1.name = "jack" 
  11. obj2.age = 18 
  12. # 动态的给类添加实例要领 
  13. Foo.show = print_doc 
  14. obj1.show() 
  15. obj2.show() 

可是!假如我想限定实例可以添加的变量怎么办?可以使slots限定实例的变量,好比,只应承Foo的实例添加name和age属性。

  1. def print_doc(self): 
  2.     print("haha") 
  3. class Foo: 
  4.     __slots__ = ("name", "age") 
  5.     pass 
  6. obj1 = Foo() 
  7. obj2 = Foo() 
  8. # 动态添加实例变量 
  9. obj1.name = "jack" 
  10. obj2.age = 18 
  11. obj1.sex = "male"       # 这一句会弹堕落误 
  12. # 可是无法限定给类添加要领 
  13. Foo.show = print_doc 
  14. obj1.show() 
  15. obj2.show() 
  16. 因为'sex'不在__slots__的列表中,以是不能绑定sex属性,试图绑定sex将获得AttributeError的错误。 
  17. Traceback (most recent call last): 
  18.   File "F:/Python/pycharm/201705/1.py", line 14, in <module> 
  19.     obj1.sex = "male" 
  20. AttributeError: 'Foo' object has no attribute 'sex' 

必要提示的是,slots界说的属性仅对当前类的实例起浸染,对担任了它的子类是不起浸染的。想想也是这个原理,假如你担任一个父类,却莫名其妙发明有些变量无法界说,那不是大题目么?假如非要子类也被限定,除非在子类中也界说slots,这样,子类实例应承界说的属性就是自身的slots加上父类的slots。

成员掩护与会识趣制

有些工具你不想外部会见,纵然是通过挪用类工具也无法会见,那就请当真学完本章节。

私有成员

  1. class obj: 
  2.     def __init__(self,name): 
  3.         self.name=name 
  4.     def pri(self): 
  5.         print self.name 
  6.     __age = 18 
  7.     # 加上双下划线的就是私有变量,只能在类的内部会见,外部无法会见 
  8. a = obj('zhao') 
  9. a.pri() 

运行功效:

  1. zhao 

假如要在类中挪用这个私有成员,可以这么用

  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. a = obj('zhao') 
  14. a.prin() 
  15. obj.pri() 
  16. # 通过这样直接挪用类中的私有变量 

运行功效:

  1. zhao
  2. 18 

(编辑:湖南网)

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

热点阅读