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)
阅读 4.9k
4 个回答

__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就是类的属性。

谢谢两位的热心回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题