鱼C论坛

 找回密码
 立即注册
查看: 1330|回复: 6

[已解决]向类里面的方法传递参数不成功

[复制链接]
发表于 2020-7-4 15:50:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想通过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
最佳答案
2020-7-4 15:55:04


zdsb 方法的参数是 img01 ,这算局部变量 而和 self.img01 毫无关联

而你调用 zdsb 方法函数时候,打印的始终是打印 初始化的 self.img01 而不是 img01


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-4 15:55:04 | 显示全部楼层    本楼为最佳答案   


zdsb 方法的参数是 img01 ,这算局部变量 而和 self.img01 毫无关联

而你调用 zdsb 方法函数时候,打印的始终是打印 初始化的 self.img01 而不是 img01


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-4 16:56:50 | 显示全部楼层
Twilight6 发表于 2020-7-4 15:55
zdsb 方法的参数是 img01 ,这算局部变量 而和 self.img01 毫无关联

而你调用 zdsb 方法函数时候, ...

可是当我删除点self.img01的时候,系统报我没有给img定义。我应该怎么改才能实现目标呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 16:58:56 | 显示全部楼层
瓜子仁 发表于 2020-7-4 16:56
可是当我删除点self.img01的时候,系统报我没有给img定义。我应该怎么改才能实现目标呢?




你将 zdsb 方法里面 print前面前面增加一项 self.img01 = img01 试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 17:08:33 | 显示全部楼层
瓜子仁 发表于 2020-7-4 16:56
可是当我删除点self.img01的时候,系统报我没有给img定义。我应该怎么改才能实现目标呢?

删除 self.img01 会报没定义 img?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 00:08:27 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-7-4 17:08
删除 self.img01 会报没定义 img?

当我删除后显示
AttributeError: 'SHIBIE' object has no attribute 'img01'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 00:13:43 | 显示全部楼层
Twilight6 发表于 2020-7-4 16:58
你将 zdsb 方法里面 print前面前面增加一项 self.img01 = img01 试试看

可以了,非常感谢,那如果我不一开始没有设置self.img01,为什么在传递参数的时候会报错
AttributeError: 'SHIBIE' object has no attribute 'img01'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 03:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表