use*_*965 1 python attributeerror
这是我之前关于一个项目的另一个问题.
我已经阅读了一些与此相关的其他(已回答)问题,但我根本不理解答案,并希望能够更好地理解.
我正在尝试实现我正在为项目工作的更大程序的简化版本.我遇到的问题是它给了我一个我不理解的错误,它更令人困惑,因为我用于声明类的代码是直接从'完整'代码中提取的,它可以正常工作.
新课程的声明就在这里.它正在另一个计划中工作.
class node:
def __init__(self):
self.farmer, self.wolf, self.sheep, self.cabbage = False, False, False, False
self.parent = None
self.cost = 0
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将它与此代码一起使用时:
parent = node
fchild = node
schild = node
wchild = node
cchild = node
fchild = parent
fchild.farmer != fchild.farmer
fchild.parent = parent
fchild.cost += 1
Run Code Online (Sandbox Code Playgroud)
结果是一条错误消息:
Traceback (most recent call last):
File "boolfliptest.py", line 17, in <module>
fchild.farmer != fchild.farmer
AttributeError: class node has no attribute 'farmer'
Run Code Online (Sandbox Code Playgroud)
正如我所说的,我已经看到了关于这个主题的其他问题,但我不理解答案,我更加困惑,因为它适用于其他程序.我在这里做的事情有什么问题吗?感谢您的回复.
__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()
Run Code Online (Sandbox Code Playgroud)
就目前而言,您的代码只是将这些变量分配给类本身,而不是它的实例.
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |