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

史上最全Python面向对象编程

发布时间:2019-03-27 09:09:33 所属栏目:建站 来源:浪子燕青
导读:副标题#e# 面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别。 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 3. 写一个函数完成某个功能 4. 写一个函数完成某个功能 5. 写一个函数完成某个功能 6. 写一个函数完成某个功

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' 

(编辑:西安站长网)

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

热点阅读