Breadth-first search(BFS) Implementation in Python 3
There are a few PEP8 issues:


In Python3, class definitions have been overhauled a bit, and one can simply do class Node: instead of class Node(object):.  
The spacing is a bit all over the place: there should be two blank lines between class definitions, and I find the spacing within def bfs(self, start_node) difficult.
The naming convention is to be snake_cased.


To address this type of issues, have a look at flake8 or black

Node.visited is problematic.
First, if the node is in several trees, you may not visit it if it's already been  visited in another tree, or even in the same tree when doing a second search.

The fact that you have visited a node is part of the algorithm, and not so much a property of a Node. 

With a few tweaks you can rely on queue only, or have a second list of visited:

visited = []
for node in current_node.adjacency_list:
   if not node in visited:
        visited.append(node)


The comment #BFS -&gt; queue is not very telling.

Lastly, this is iterating through the tree, and not doing actual search. Where's the exit condition? What's returned? What should I get when searching for node4 from node1? node4 from node3? node3 from node2?

It's not quite done...