以下是我的類定義:爲什麼它說類型錯誤:「集羣」對象不是可調用,即使調用(集羣)給出真實
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)
和prev是我的孩子羣集節點添加到樹
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?
我已經四處搜索,但似乎無法找到任何符合我的情況的東西
在此先感謝
編輯: 所以,我在python絕對的初學者,我應該有可能導致與
>>> print(tree)
<__main__.cluster object at 0x02AF8590>
>>> print(tree.prev)
<__main__.cluster object at 0x02AEA270>
我假設,因爲我得到不同的位置對於這兩個陳述,prev已被設置爲 但我無法返回到我的父節點
return self.prev
順便說一句,如果你在每個方法定義之後放一個空行,那麼你的代碼會更容易閱讀。此外,您應該使用[PEP-0008](https://www.python.org/dev/peps/pep-0008/)命名約定併爲您的類指定CamelCase名稱,例如'Cluster'和'Logline'或' LogLine'。 –