我剛剛重新打包了我的程序。以前,所有模塊都處於「whyteboard」包中,包含一個包含一組虛擬GUI測試對象的「fakewidgets」包。TypeError:未綁定方法__init __()....在重新打包後的單元測試期間
現在,我所有的模塊都在包裝中,例如, whyteboard.gui,whyteboard.misc,whyteboard.test - 這是fakewidgets現在居住的地方。
現在,運行我的測試時,我得到一個異常,
File "/home/steve/Documents/whyteboard/whyteboard/gui/canvas.py", line 77, in __init__
wx.ScrolledWindow.__init__(self, tab, style=wx.NO_FULL_REPAINT_ON_RESIZE | wx.CLIP_CHILDREN)
TypeError: unbound method __init__() must be called with ScrolledWindow instance as first argument (got Canvas instance instead)
這裏的 類問題
class Canvas(wx.ScrolledWindow):
def __init__(self, tab, gui, area):
wx.ScrolledWindow.__init__(self, tab, style=wx.NO_FULL_REPAINT_ON_RESIZE | wx.CLIP_CHILDREN)
然而,我的程序加載和運行正常,除了從單元測試。代碼是相同的,只是我的測試的導入代碼與新軟件包不同。
前:
import os
import wx
import fakewidgets
import gui
import lib.mock as mock
from canvas import Canvas, RIGHT, DIAGONAL, BOTTOM
from fakewidgets.core import Bitmap, Event, Colour
from lib.configobj import ConfigObj
from lib.pubsub import pub
from lib.validate import Validator
現在
:
import os
import wx
import whyteboard.test
import whyteboard.gui.frame as gui
from whyteboard.lib import ConfigObj, mock, pub, Validator
from whyteboard.gui.canvas import Canvas, RIGHT, DIAGONAL, BOTTOM
from whyteboard.test.fakewidgets.core import Bitmap, Event, Colour, PySimpleApp
這可能是值得一提的是,fakewidgets包做了一些取巧到我的程序認爲它的使用wxPython的班,即使他們嘲笑。 這是從被採用進口模塊whyteboard.test.fakewidgets' __init__
class Window(object):
def __init__(self, parent, *args, **kwds):
self.parent = parent
self.Enabled = True
self.calls = []
self.size = (0, 0)
self.captured = False
def GetClientSizeTuple(self):
return (0, 0)
self.captured = True
def GetId(self):
pass
def Fit(self):
pass
def SetFocus(self):
pass
def PrepareDC(self, dc):
pass
def Destroy(self):
pass
...
class ScrolledWindow(Window):
def SetVirtualSize(self, *size):
pass
def SetVirtualSizeHints(self, *size):
pass
import wx
wx.__dict__.update(locals())
爲什麼你明確調用'wx.ScrolledWindow .__ init __(self,...)'而不是'super(Canvas,self).__ init __(...)'? – 2010-08-01 21:12:37
無論如何我都會得到相同的錯誤。 – 2010-08-01 21:25:48
「假」和真正的wx類之間明顯存在混淆。你的詭計是如何工作的?你如何實例化你的Canvas類? – 2010-08-29 13:21:08