gpt4 book ai didi

python - 适合初学者的 Python 类(class)

转载 作者:行者123 更新时间:2023-11-28 21:28:29 25 4
gpt4 key购买 nike

你能帮我找出问题所在吗?有效的 Python 代码:

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’”。为什么没有呢?我告诉他 self 是 Frame 然后添加了一个字段“a”(此时没有错误)但是当我要求打印它时(打印行错误),它忘记了“a”存在......我哪里错了?谢谢。

最佳答案

def __init__(self, parent, b):
self = wx.Frame(parent = parent, id=-1, title="Parameters")

在这里您重新分配了 self,因此您最终不再引用 ParamWindow 实例!你永远不应该那样做!你想达到什么目的?

    self.a = b

在这里,您将 a 分配给 self,它现在是 Frame,而不是 ParamWindowParamWindow.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

关于python - 适合初学者的 Python 类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7993089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com