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

这是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_inner

self.run()

  File "C:\ProgramData\Anaconda3\lib\threading.py", line 865, in run

self._target(*self._args, **self._kwargs)

  File "C:/Users/Python_Scripts/N-back.py", line 198, in targetTask

for i in range(self.sequence.shape[0]):

AttributeError: 'NBack' object has no attribute 'sequence'

我究竟做错了什么?为什么它告诉我属性“序列”不存在?我已经检查过缩进。我的 ZBack.py 也返回一个数组。


汪汪一只猫
浏览 113回答 1
1回答

慕婉清6462132

看来你调用的方法targetTask()内部NBack的构造,在下面的行self.t = Thread(target=self.targetTask,)self.t.daemon = Trueself.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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python