class Node:
def __init__(self, edges = set()):
self.edges = edges
def main():
foo = Node()
bar = Node()
quz = Node()
foo.edges.add(bar)
bar.edges.add(foo)
assert(foo is not bar) # assertion succeeds
assert(foo is not quz) # assertion succeeds
assert(bar is not quz) # assertion succeeds
assert(len(quz.edges) == 0) # assertion fails??
main()
spoiler
Mutable default values are shared across objects. The set in this case.
You must log in or register to comment.
Yeah Pylint catches this. If you aren’t using Pylint you are writing bad Python.