gpt4 book ai didi

python - 在其他类方法中定义新的类实例 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:52 24 4
gpt4 key购买 nike

我创建了一个class1有一个方法 method1在它上面,我将一个变量声明为另一个 class2 的实例。它看起来像这样:

class class1(object):   
def method1(self):
myInstanceOfClass2 = class2()
# Do some stuff

问题是,当我尝试运行 method1 时,出现以下错误来自 class1 的实例:

UnboundLocalError: local variable 'myInstanceOfClass2' referenced before assignment

我可以通过输入 global myinstanceOfClass2 来解决这个问题里面method1 ,在给它分配一些东西之前,但我真的不明白为什么。我阅读了文档( https://docs.python.org/2/reference/executionmodel.html ),但仍然不明白它到底是如何工作的。所有其他不是用户定义类实例的变量在 method1 中声明时似乎都工作得很好。 (例如整数或每个示例中的字符串)。

有人可以向我解释一下这是如何工作的吗?

编辑:

我犯了一个我在问题中没有提到的错误,因为我从来没有想过这是一个错误! (并且放置我的整个代码是不可能的,因为太长了。)我实际上是在执行 class2 = class2() 时将类的名称作为实例的名称。并且一直认为 Python 能够区分其中一种。我现在更改了实例的名称,一切正常。

最佳答案

使用class而不是def

class class2(object):
pass

class class1(object):
def method1(self):
myInstanceOfClass2 = class2()

c = class1()
c.method1()
print('got here')

对我来说效果很好。

编辑:上面的文本回答了最初提出的问题(使用def而不是class)。请参阅第一篇文章中的最终编辑,以获取实际问题的解决方案。

关于python - 在其他类方法中定义新的类实例 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23786459/

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