向类里面的方法传递参数不成功
想通过pyautogui做一个自动化的游戏脚本。先定义了一个类,然后想在类的实例方法里传递需要识别的图片文件名。结果发现向实例对象里传递参数失败,程序始终识别的是在init方法里定义的self.img01 = 'zudui.PNG'。程序位报错。苦于找不到原因,希望大家解答一下,感谢!附上代码import pyautogui
import time
class SHIBIE():
def __init__(self): #构造函数带参数,实例化时就需要带参数
self.start = 1
self.img01 = 'zudui.PNG'
self.img02 = '...'
def zdsb(self,img01): #构造函数未带参数,实例方法带参数,实例化无需带参数,调用方法时带参数即可
print(self.img01)
while self.start:
self.dianji = pyautogui.locateOnScreen(self.img01,confidence = 0.9) #未发现返回none.有confidence属性是名称不能为中文
if self.dianji == None:
print('未发现,3s后再次识别')
time.sleep(3)
else:
self.button_dj = pyautogui.center(self.dianji)
self.button_dj_x, self.button_dj_y = self.button_dj
print(self.button_dj_x, self.button_dj_y)
pyautogui.click(self.button_dj_x, self.button_dj_y)
self.start = 0
zd = SHIBIE()
jy = SHIBIE()
cjdw = SHIBIE()
cj = SHIBIE()
ks = SHIBIE()
cx = SHIBIE()
zd.zdsb('01zudui.PNG')
jy.zdsb('02jinyan.PNG')
cjdw.zdsb('03cjdw.PNG')
cj.zdsb('04cj.PNG')
ks.zdsb('05kszd.PNG')
cx.zdsb('06cxtg.PNG')
附上结果:
zudui.PNG
363 322
zudui.PNG
363 322
zudui.PNG
363 322
zudui.PNG
363 322
zudui.PNG
363 322
Process finished with exit code 0
zdsb 方法的参数是 img01 ,这算局部变量 而和 self.img01 毫无关联
而你调用 zdsb 方法函数时候,打印的始终是打印 初始化的 self.img01 而不是 img01
Twilight6 发表于 2020-7-4 15:55
zdsb 方法的参数是 img01 ,这算局部变量 而和 self.img01 毫无关联
而你调用 zdsb 方法函数时候, ...
可是当我删除点self.img01的时候,系统报我没有给img定义。我应该怎么改才能实现目标呢? 瓜子仁 发表于 2020-7-4 16:56
可是当我删除点self.img01的时候,系统报我没有给img定义。我应该怎么改才能实现目标呢?
你将 zdsb 方法里面 print前面前面增加一项 self.img01 = img01 试试看 瓜子仁 发表于 2020-7-4 16:56
可是当我删除点self.img01的时候,系统报我没有给img定义。我应该怎么改才能实现目标呢?
删除 self.img01 会报没定义 img? 永恒的蓝色梦想 发表于 2020-7-4 17:08
删除 self.img01 会报没定义 img?
当我删除后显示
AttributeError: 'SHIBIE' object has no attribute 'img01' Twilight6 发表于 2020-7-4 16:58
你将 zdsb 方法里面 print前面前面增加一项 self.img01 = img01 试试看
可以了,非常感谢,那如果我不一开始没有设置self.img01,为什么在传递参数的时候会报错
AttributeError: 'SHIBIE' object has no attribute 'img01'
页:
[1]