weixin_39632135
2018-09-11 11:35
采纳率: 100%
浏览 4.1k
已采纳

请问python中调用类的方法怎么调用

请问在类里怎么调用类的函数,我想把canshu里返回的数据在order里打印出来,比如我这么写
class DailishiyanDownloaderMiddleware(object):

Not all methods need to be defined. If a method is not defined,

scrapy acts as if the downloader middleware does not modify the

passed objects.

def canshu(self):#数据库返回数据在这个函数
aa=["192.168.1.2","11.22.33","44,55,66"]
return aa
b=canshu(1)
print("我在函数外",b)
def order(self):#将返回数据按顺序输出
print("我来自order")
for i in range(10):
yield i
a=order(1)
@classmethod
def from_crawler(cls, crawler):
# This method is used by Scrapy to create your spiders.
s = cls()
crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
return s
........
就能正常输出,但我如果这么写,就会报错AttributeError: 'int' object has no attribute 'canshu'
class DailishiyanDownloaderMiddleware(object):

Not all methods need to be defined. If a method is not defined,

scrapy acts as if the downloader middleware does not modify the

passed objects.

def canshu(self):#数据库返回数据在这个函数
aa=["192.168.1.2","11.22.33","44,55,66"]
return aa
b=canshu(1)
#print("我在函数外",b)
def order(self):#将返回数控按顺序输出Ss
print("我来自order",self.canshu())
for i in range(10):
yield i
a=order(1)
@classmethod
def from_crawler(cls, crawler):
# This method is used by Scrapy to create your spiders.
s = cls()
crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
return s
......
省略的部分是scrapy框架的默认代码,基本没有更改
毫无头绪的bug,求帮助,感谢

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

  • weixin_39632135 2018-09-13 14:33
    最佳回答

    你这里的canshu()和order()都是实例方法,如果当做普通的函数来调用,应该以一个实例对象作为第一个参数。
    你在order函数的定义里对它的第一个参数self调用了self.canshu(),然后你调用时:a = order(1),此时self为1,是一个int类实例,显然没有.canshu属性。(这是我在另一个论坛上得到的答案,解决了我的问题)

    已采纳该答案
    评论
    解决 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题