Python初见-码农

python中的__init__

2021-09-12  本文已影响0人  Rainbow想喝奶茶

在建立类的过程中,常常会看到有些例子首先会建立__init__方法,做一些参数传入的工作,下面就对这个方法进行一些简单的说明。

__init__作用

实例对象属性初始化。它完成了给类建立的实例设置初始化参数的作用,并且在这个类下的所有方法均可以应用上述参数,而不需要每一个方法再去进行单独的参数设置。(一段不专业但我自己是这么理解的说明)

举例说明

最近看的书,第一步就是从封装请求开始,就以这个作为样例开始学习吧。

import requests
class client():
    def __init__(self,api_root_url):
        self.api_root_url=api_root_url
        self.session=requests.session()

    def request(self,url,method,data=None,json=None,**kwargs):
        url=self.api_root_url+url
        if method=="get":
            return self.session.get(url,**kwargs)
        if method=="post":
            return self.session.post(url,data,json,**kwargs)

    def get(self,url,**kwargs):
        return self.request(url,"get",**kwargs)
    def post(self,url,data=None,json=None,**kwargs):
        return self.request(url,"post",data,json,**kwargs)

在上面的例子中,可以分为三个部分来看。

  1. 利用__init__,初始化client这个类建立的实例的属性。该方法传入的第一个参数self,就代表实例对象本身。
  2. 利用self.api_root_url=api_root_url来初始化实例的根url。这个过程就是把调用类时传入的url赋值给实例本身,这样在整个类中应用各个方法,实例的该属性始终保存。
    如果不加self.api_root_url相当于是在__init__函数内部的一个局部变量,不属于实例本身。此方法结束则此局部变量结束,不会在其它方法中起到作用。
  3. 在初始化阶段创建了self.session,保存会话功能。
  1. 首先是将在__init__中传入的api_root_url与后续url进行拼接,组成真正发起请求的url。
  2. 根据传入的对应方法,发起对应的请求。
  1. 传递参数给request,执行对应的请求。
    这里为什么不是直接发起requests请求,因为想解决的是url拼接的问题,request方法直接拼接完成,后续的调用方法可以直接输入后续的地址即可。

整个封装的类,其实是实现了避免重复输入url根地址的冗余过程。

最后验证一下调用结果:

if __name__=="__main__":
    client=client("http://httpbin.org")
    demand=client.post("/post",json={"a":"b"})
    print(demand.text)

建立client对象,传入根url;
调用post方法(request函数中的method=post),并向"http://httpbin.org/post"传入json={"a":"b"},最后输出返回值。

返回值截图

自我记录,有错误欢迎指正~

上一篇下一篇

猜你喜欢

热点阅读