根據您的澄清的意見,我想你想是這樣的:那麼
class Circle(psychopy.visual.circle.Circle):
def __init__(self, win, lineColor='black', fillColor='red'):
super(Circle, self).__init__(
win=win, lineColor=lineColor, fillColor=fillColor, units='deg',
pos=(1,1), radius=1)
Circle
將默認爲units='deg'
,pos=(1,1)
,並radius=1
。但是,您可以爲每個實例指定不同的lineColor
和fillColor
。由於Circle
繼承自PsychoPy visual.Circle
類,因此它具有其所有功能。對super()
的調用實際上初始化父類。見例如this post有關super()
函數的更多信息。
讓我們把這個工作。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from psychopy import core, visual, monitors
import psychopy.visual.circle
class Circle(psychopy.visual.circle.Circle):
def __init__(self, win, lineColor='black', fillColor='red'):
super(Circle, self).__init__(
win=win, lineColor=lineColor, fillColor=fillColor, units='deg',
pos=(1,1), radius=1)
def main():
# Create a temporary monitor configuration.
monitor = monitors.Monitor('test_display')
monitor.setWidth(60)
monitor.setDistance(80)
monitor.setSizePix((1440, 900))
win = visual.Window(monitor=monitor)
colors = ('red', 'green', 'blue')
circles = [Circle(win=win, fillColor=color) for color in colors]
for circle in circles:
circle.draw()
win.flip()
core.wait(1)
core.quit()
if __name__ == '__main__':
main()
此代碼將創建三個不同顏色的Circle
s,並逐個顯示它們。我必須創建一個臨時監視器配置,否則PsychoPy會拒絕在我當前的計算機上打開Window
。
目前還不清楚你在這裏試圖達到什麼目的。通常,你可以繼承'psychopy.visual.Circle'繼承所有功能。我不明白這個列表,因爲你只是在你的類裏面實例化一個單獨的'psychopy.visual.Circle'。我假設你只是想使用'psychopy.visual.Circle'對象列表? – hoechenberger
是的,我想創建一個psychopy.visual.Circle對象列表,但它們是不同的顏色。 – Jon