在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python類里調(diào)用函數(shù)

python類里調(diào)用函數(shù)

請問在類里怎么調(diào)用類的函數(shù),比如我這么寫
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):#數(shù)據(jù)庫返回數(shù)據(jù)在這個函數(shù)
    aa=["192.168.1.2","11.22.33","44,55,66"]
    return aa
b=canshu(1)
print("我在函數(shù)外",b)
def order(self):#將返回數(shù)據(jù)按順序輸出
    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):#數(shù)據(jù)庫返回數(shù)據(jù)在這個函數(shù)
    aa=["192.168.1.2","11.22.33","44,55,66"]
    return aa
b=canshu(1)
#print("我在函數(shù)外",b)
def order(self):#將返回數(shù)控按順序輸出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框架的默認(rèn)代碼,基本沒有更改
 毫無頭緒的bug,求幫助,感謝
回答
編輯回答
局外人

你這里的canshu()order()都是實例方法,如果當(dāng)做普通的函數(shù)來調(diào)用,應(yīng)該以一個實例對象作為第一個參數(shù)。
你在order函數(shù)的定義里對它的第一個參數(shù)self調(diào)用了self.canshu(),然后你調(diào)用時:a = order(1),此時self1,是一個int類實例,顯然沒有.canshu屬性。

2018年3月16日 03:06
編輯回答
尐潴豬
def canshu(cls):#數(shù)據(jù)庫返回數(shù)據(jù)在這個函數(shù)
    aa=["192.168.1.2","11.22.33","44,55,66"]
    return aa
b=canshu(1)
#print("我在函數(shù)外",b)
def order(cls):#將返回數(shù)控按順序輸出Ss
    print("我來自order",cls.canshu())
    for i in range(10):
        yield i
    
2017年1月23日 15:18