为了账号安全,请及时绑定邮箱和手机立即绑定

在调用函数而不是使用 numpy 数组时如何使程序工作?

在调用函数而不是使用 numpy 数组时如何使程序工作?

汪汪一只猫 2021-11-02 10:26:56
这是NBack 测试的代码。当我按原样执行代码时,它可以工作。出现在屏幕上的顺序是self.sequence = np.array([0,0,0,1,1,1,6,6,6,0,1,2,3,4,5,6,7,8,0,1])但是我有一个函数可以生成我想要使用的序列而不是该数组。它是 ZBack.py 当我调用我的 ZBack.pyself.sequence = generateZBackSequence(20, 5)而不是数组时,程序不起作用。它输出这个错误:Exception in thread Thread-14:Traceback (most recent call last):  File "C:\ProgramData\Anaconda3\lib\threading.py", line 917, in _bootstrap_innerself.run()  File "C:\ProgramData\Anaconda3\lib\threading.py", line 865, in runself._target(*self._args, **self._kwargs)  File "C:/Users/Python_Scripts/N-back.py", line 198, in targetTaskfor i in range(self.sequence.shape[0]):AttributeError: 'NBack' object has no attribute 'sequence'我究竟做错了什么?为什么它告诉我属性“序列”不存在?我已经检查过缩进。我的 ZBack.py 也返回一个数组。
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

看来你调用的方法targetTask()内部NBack的构造,在下面的行


self.t = Thread(target=self.targetTask,)

self.t.daemon = True

self.t.start()

在它有机会定义sequence属性之前。


它将通过sequence在调用之前定义和您需要的任何其他内容来修复targetTask()。


构造函数看起来像这样:


    def __init__(self, master):


        ##Title of the window

        self.master = master

        master.title("N-Back")


        ##It measures the screen size (width x height + x + y)

        ##The opened window will be based on the screen size

        master.geometry("{0}x{1}-0+0".format(master.winfo_screenwidth(), master.winfo_screenheight()))

        self.canvas = tk.Canvas(master, width=master.winfo_screenwidth(), height=master.winfo_screenheight(), \

                            borderwidth=0, highlightthickness=0, bg="grey")



        self.canvasWidth = master.winfo_screenwidth()

        self.canvasHeight =  master.winfo_screenheight()


        self.createLines()

        self.createText()


        self.canvas.grid()


        # Notice we define self.sequence before calling self.targetTask

        self.sequence = generateZBackSequence(20, 5)



        ## Positions of the circles ("stims")


        ##          -   -                      

        ##        0 - 1 - 2                     

        ##      ------------                   

        ##       3  - 4 - 5                      

        ##      ------------                   

        ##       6  - 7 - 8                      

        ##          -   -                        


        self.positions = np.array([[(self.canvasWidth/2)-130, (self.canvasHeight/2)-130],\

                               [(self.canvasWidth/2), (self.canvasHeight/2)-130],\

                               [(self.canvasWidth/2)+130, (self.canvasHeight/2)-130],\

                              [(self.canvasWidth/2)-130, (self.canvasHeight/2)],\

                               [(self.canvasWidth/2), (self.canvasHeight/2)],\

                               [(self.canvasWidth/2)+130, (self.canvasHeight/2)],\

                              [(self.canvasWidth/2)-130, (self.canvasHeight/2)+130], \

                               [(self.canvasWidth/2), (self.canvasHeight/2)+130], \

                               [(self.canvasWidth/2)+130, (self.canvasHeight/2)+130]])



        self.t = Thread(target=self.targetTask,)

        self.t.daemon = True

        self.t.start()



查看完整回答
反对 回复 2021-11-02
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信