Ниже приведены мои определения классов:почему это говорит TypeError: «кластер» объект не вызываемая даже если вызываемая (кластер) дает истинное
class logline:
def __init__(self,t,cmp,msg):
self.t = t
self.cmp = cmp
self.msg = msg
class cluster:
clusters = []
def __init__(self,status,log):
self.status = status
self.children = []
self.eventlogs = []
self.rep_msg = log.msg
self.addLog(log)
self.prev = None
if(status == 'root'):
cluster.clusters.append(self)
def prev(self):
return self.prev
def print_children(self):
for child in range(0,len(self.children)):
print(self.children[child].rep_msg)
self.children[child].print_logs()
def print_logs(self):
for log in self.eventlogs:
print(log.msg)
def add_child(self,status,log):
temp = cluster(status,log)
self.children.append(temp)
temp.prev=self
return temp
def addLog(self,log):
self.eventlogs.append(log)
Теперь дерево мой кластер корневой узел
tree = cluster('root',log1)
и пред мой ребенок узел кластера добавляется к дереву
tree = tree.add_child('child',log6)
Когда я пытаюсь: tree = tree.prev()
я должен получить обратно дерево, но это дает мне ошибку:
tree = tree.prev()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'cluster' object is not callable
С другой стороны: callable(cluster)
оценивает истинный
основаны мои определения класса выключено: How can I implement a tree in Python? Are there any built in data structures in Python like in Java?
Я искал вокруг, но, похоже, не нашел ничего, что соответствовало моей ситуации
Заранее спасибо
Edit: Итак, я абсолютный новичок в Python, я бы, вероятно, привело с тем
>>> print(tree)
<__main__.cluster object at 0x02AF8590>
>>> print(tree.prev)
<__main__.cluster object at 0x02AEA270>
Я предполагаю, что, поскольку я получаю различные места для обоих утверждений, пред было установлено нечто Но я не могу вернуться в мой родительский узел с
return self.prev
Кстати, вам будет легче читать код, если вы поместите пустую строку после каждого определения метода. Кроме того, вы должны использовать соглашения об именах [PEP-0008] (https://www.python.org/dev/peps/pep-0008/) и давать имена классов CamelCase, например 'Cluster' и' Logline' или ' LogLine'. –