python中类的方法引用还是参数引用

代码:

   def __init__(self,url):
        self.url = url
        self.log = mylog()
        self.pageSum = 5
        self.urls = self.getUrls(self.pageSum)
        self.items = self.spider(self.urls)
        self.pipelines(self.items)

构造函数是引用了 self.getUrlsself.spiderself.pipelines 三个方法?
还是引用了三个方法中的 self.pageSumself.urlsself.items 三个参数,还是其他?请教!
一直对类不清晰。

具体代码见下:

import requests
from bs4 import BeautifulSoup
from mylog import MyLog as mylog
import xlwt


class Item(object):
    title = None    #帖子标题
    firstAuthor = None  #帖子创建者
    firstTime = None   #帖子创建时间
    reNum = None    #总回复数
    content = None  #最后回复内容
    lastAuthor = None   #最后回复者
    lastTime = None #最后回复时间
    

class GetTiebaInfo(object):
    def __init__(self,url):
        self.url = url
        self.log = mylog()
        self.pageSum = 5
        self.urls = self.getUrls(self.pageSum)
        self.items = self.spider(self.urls)
        self.pipelines(self.items)
        
    def getUrls(self,pageSum):
        urls = []
        # 省略...
        return urls

    def spider(self, urls):
        items = []
        # 省略...
        return items
    
    def pipelines(self, items):
        # 省略...
      
      
if __name__ == '__main__':
    url = 'http://tieba.baidu.com/f?kw=%E6%9D%83%E5%88%A9%E7%9A%84%E6%B8%B8%E6%88%8F&ie=utf-8&pn=50'
    GTI = GetTiebaInfo(url)
阅读 2.2k
评论
    4 个回答
    • 394

    __init__() 应该叫做 初始化函数,是类创建新实例后默认调用的函数,跟普通函数的执行没什么区别.
    __init__(self, url) 分别对 5 个实例属性进行了赋值, 其中调用了三个实例方法, 这些实例方法又各自引用了实例属性作为参数

      我感觉你是对self不太理解。

      你可以把self当作GetTiebaInfo这个类的实例。

      这样的话, 以下这些都是实例的属性:

      self.url = url
      self.log = mylog()
      self.pageSum = 5
      self.urls = self.getUrls(self.pageSum)
      self.items = self.spider(self.urls)
      self.pipelines(self.items)
      

      多说一句,实例的属性应该和类的属性区分开

      class GetTiebaInfo(object):
          class_item = ''
          def __init__(self,url):
              self.url = url
              self.log = mylog()
              self.pageSum = 5
              self.urls = self.getUrls(self.pageSum)
              self.items = self.spider(self.urls)
              self.pipelines(self.items)
          

      这里的class_item就是类的属性。

        谢谢两位的热心回答

          一句话来说应该就是:实例化了当前类中的类方法。

            撰写回答

            登录后参与交流、获取后续更新提醒