Hi all, this just caused me several hours of my life until I could whittle it down to this minimal example. Simple question: Why is the x member of object "foo" modified by initializing "bar"?
Obviously, initializing foo with None doesn't set foo.x at all. So I guess x stays a class property, not an instance property. And instantiating bar just added an item to the class property but didn't instantiate a new set. So basically, neither foo nor bar ever had their "own" x, right? Oooohh, dangerous! Never use mutable types in type hint, unless it's in explicit dataclasses (which automatically add an appropriate __init__()?) Now I must fine-comb all my code for more of these. class Foo(): x : set = set() def __init__(self, s): if s: self.x.add(s) foo = Foo(None) print(foo.x) # prints 'set()' bar = Foo('abc') print(foo.x) # prints '{'abc'} -- https://mail.python.org/mailman/listinfo/python-list