gpt4 book ai didi

Python: AttributeError: x 节点没有属性 'y'

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:20 25 4
gpt4 key购买 nike

这是我之前关于项目的另一个问题。

我已经阅读了一些与此相关的其他(已回答)问题,但我根本不了解这些答案,希望能得到更好的理解。

我正在尝试为一个项目实现一个更大程序的简化版本。我遇到的问题是它给了我一个我不明白的错误,它更令人困惑,因为我用于声明类的代码是直接从它工作正常的“完整”代码中提取的。

新类的声明在这里。它正在另一个程序中工作。

class node:
def __init__(self):
self.farmer, self.wolf, self.sheep, self.cabbage = False, False, False, False
self.parent = None
self.cost = 0

但是当我尝试将它与这段代码一起使用时:

parent = node
fchild = node
schild = node
wchild = node
cchild = node

fchild = parent
fchild.farmer != fchild.farmer
fchild.parent = parent
fchild.cost += 1

结果是一条错误信息:

Traceback (most recent call last):
File "boolfliptest.py", line 17, in <module>
fchild.farmer != fchild.farmer
AttributeError: class node has no attribute 'farmer'

正如我所说,我已经看到关于这个主题的其他问题,但我不明白答案,而且我更加困惑,因为它适用于其他程序。我在这里做的有什么问题吗?感谢您的任何回复。

最佳答案

__init__类的方法(通常称为“构造函数”方法)仅在您创建该类的新实例时调用。此外,您尝试访问的所有属性都包含在 __init__ 方法中。这意味着它们是实例属性并且只有您创建该类的实例后才可用。

因此,要解决您的问题,请使这些变量指向该类的实例:

# By adding (), I initialize (create an instance of) class node.
# This means that I will be calling the __init__ method.
parent = node()
fchild = node()
schild = node()
wchild = node()
cchild = node()

就目前而言,您的代码只是将这些变量分配给类本身,而不是它的实例。

关于Python: AttributeError: x 节点没有属性 'y',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106767/

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