加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

史上最全Python面向对象编程

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

实例方法

  1. # -*- coding: utf-8 -*- 
  2. # @Time    : 2018/5/3 0003 17:16 
  3. # @Author  : Langzi 
  4. # @Blog    : www.langzi.fun 
  5. # @File    : 面向对象3.py 
  6. # @Software: PyCharm 
  7. import sys 
  8. import time 
  9. import requests 
  10. reload(sys) 
  11. sys.setdefaultencoding('utf-8') 
  12.  
  13. class dd: 
  14.     def __init__(self,url): 
  15.         self.url=url 
  16.     def runx(self): 
  17.         print requests.get(self.url).status_code 
  18.  
  19. a = dd('http://www.langzi.fun') 
  20. a.runx() 
  21. # 这种调用方法就是实例方法 

静态方法

静态方法由类调用,无默认参数。将实例方法参数中的self去掉,然后在方法定义上方加上@staticmethod,就成为静态方法。它属于类,和实例无关。建议只使用类名.静态方法的调用方式。(虽然也可以使用实例名.静态方法的方式调用)

  1. # -*- coding: utf-8 -*- 
  2. # @Time    : 2018/5/3 0003 17:21 
  3. # @Author  : Langzi 
  4. # @Blog    : www.langzi.fun 
  5. # @File    : 面向对象4.py 
  6. # @Software: PyCharm 
  7. import sys 
  8. import requests 
  9. reload(sys) 
  10. sys.setdefaultencoding('utf-8') 
  11. class ff: 
  12.     @staticmethod 
  13.     def runx(): 
  14.         print requests.get('http://www.langzi.fun').status_code 
  15. ff.runx() 
  16. #这里就直接调用了类的变量,只在类中运行而不在实例中运行的方法 

经常有一些跟类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法. 比如更改环境变量或者修改其他类的属性等能用到静态方法. 这种情况可以直接用函数解决, 但这样同样会扩散类内部的代码,造成维护困难。

类方法

类方法由类调用,采用@classmethod装饰,至少传入一个cls(代指类本身,类似self)参数。执行类方法时,自动将调用该方法的类赋值给cls。建议只使用类名.类方法的调用方式。(虽然也可以使用实例名.类方法的方式调用)

实际案例

如果要构造一个类,接受一个网站和这个网站的状态码,然后打印出来。就像这样:

  1. import sys 
  2. import requests 
  3. reload(sys) 
  4. sys.setdefaultencoding('utf-8') 
  5. class gg: 
  6.     def __init__(self,url,stat): 
  7.         self.url=url 
  8.         self.stat=stat 
  9.     def outer(self): 
  10.         print self.url 
  11.         print self.stat 
  12. a = gg('langzi',200) 
  13. a.outer() 

(编辑:源码门户网)

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