class ParamWindow:
def __init__(self, b):
self.a = b
print self.a
params = ParamWindow(8)
print params.a
这打印8和8.好的。然后我做:
class ParamWindow:
def __init__(self, parent, b):
self = wx.Frame(parent = parent, id=-1, title="Parameters")
self.a = b
print self.a
params = ParamWindow(None, 8)
print params.a
它说“ParamWindow实例没有属性'a'”。为什么不呢?我告诉他自己是Frame然后添加一个字段“a”(此时没有错误)但是当我要求打印它(打印行出错)时,忘记了“a”存在... 我哪里错了? 感谢。
答案 0 :(得分:6)
def __init__(self, parent, b):
self = wx.Frame(parent = parent, id=-1, title="Parameters")
在此您重新分配self
,因此您最终不再参考ParamWindow
实例了!你永远不应该那样做!你想要实现什么目标?
self.a = b
在此,您将a
分配给self
,现在是Frame
,而不是ParamWindow
。永远不会定义ParamWindow.a
,稍后您会收到错误。
也许你想从Frame
继承?如果是这样,您的代码应如下所示:
class ParamWindow(wx.Frame):
def __init__(self, parent, b):
# Initialize the superclass (wx.Frame).
super(ParamWindow, self).__init__(parent=parent, id=-1, title="Parameters")
self.a = b
print self.a