所以我们有两个脚本,第一个是AdidasStock.py,第二个是StockWindow.py。我正在尝试从 StockWindow.py 替换 getVarientStock 中的基本网址。再一次,我的道歉是我对python的新手。
我收到错误:
aulocale1()只需要2个参数(给定1个)
class AdidasStock:
def __init__(self, clientId, sku):
self.session = requests.session()
self.headers = {"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36",
"Accept-Language" : "REPLACETHISPLIZZZ"}
self.locale = ''
self.clientId = clientId
self.sku = sku
self.skus = []
def getVarientStock(self, sku, base):
base = "http://www.adidas.com.au/on/demandware.store/Sites-adidas-AU-Site/en_AU"
urlVariantStock = base + '/Product-GetVariants?pid=' + sku
r = requests.get(urlVariantStock, headers=self.headers)
以下是我尝试更改上述基础,self.locale和self.headers的一部分的方法。我正在使用Tkinter Checkbutton来触发此功能。
Checkbutton
aulocale = IntVar()
aucheck = Checkbutton(self.master, variable=aulocale, onvalue=1, offvalue=0, text="AU",command=self.aulocale1)
这是功能
def aulocale1(self,base):
base.replace = "http://www.adidas.com.au/on/demandware.store/Sites-adidas-AU-Site/en_AU"
self.locale.replace = ('','AU')
self.headers.replace = ('REPLACETHISPLIZZZ','en-AU,en;q=0.8')
def uklocale1(self,base):
base.replace = "www.adidas.co.uk/on/demandware.store/Sites-adidas-GB-Site/en_GB"
self.locale.replace = ('','GB')
elf.headers.replace = ('REPLACETHISPLIZZZ','en-GB,en;q=0.8')
答案 0 :(得分:0)
函数def aulocale1(self,base):
需要一个参数 - base
但是当您使用Checkbox
将此函数分配给command=self.aulocale1
时,Checkbox
将执行此函数而不带参数 - 它将运行self.aulocale1()
您可以使用command
lambda
函数
command=lambda:self.aulocale1("argument")
(顺便说一句:如果您在lambda
循环中使用for
,那么您将遇到其他问题;))
base
是局部变量,因此您无法更改它...但您可以使用参数base
运行此函数,以便您可以对此参数使用默认值
def getVarientStock(self, sku, base="http://www.adidas.com.au/ ...")
urlVariantStock = base + '/Product-GetVariants?pid=' + sku
r = requests.get(urlVariantStock, headers=self.headers)
如果您在没有base
getVarientStock("XX")
然后它使用"http://www.adidas.com.au/ ..."
作为base
但如果你用第二个参数
运行它getVarientStock("XX", "http://stackoverflow.com")
然后它使用"http://stackoverflow.com"
作为base