以下是我正在处理的代码:
class Node:
count = 0
def __init__(self):
Node.id = Node.count
Node.count += 1
@classmethod
def get_count(cls):
return Node.count
class Element:
count = 0
def __init__(self, type = "MTH20", group = 0):
self.type = type
self.group = group
Element.count += 1
def define_element(self):
self.nodes = [-1]*3
for l in range(len(self.nodes)):
if self.nodes[l] == -1:
self.nodes[l] = Node()
print(self.nodes[l].id)
for l in range(len(self.nodes)):
print(self.nodes[l].id)
ga = Element()
ga.define_element()
我希望此代码的输出为:
0
1
2
0
1
2
但是我得到了这个:
0
1
2
2
2
2
我的结论是,在构造新节点时,某种程度上会覆盖节点对象的id属性。但是,我不明白为什么会这样做,或者如何避免这种情况。
有谁可以指出我做错了什么?
答案 0 :(得分:2)
使用<div id="container">
<h1>Hello, world!</h1>
<h4>Input your console data below : </h4>
<form action="" id="form" onsubmit="sConsole(event)">
<input type="text" name="data" id="data">
<button type="submit">Submit</button>
</form>
</div>
您正在访问类属性。您希望通过执行Node.id
将ids存储为实例属性。
self.id
我想指出,您的class Node:
count = 0
def __init__(self):
self.id = Node.count # We want id to be an attribute of that specific node
Node.count += 1
方法可以用更简洁的方式编写。
Element.define_element