New submission from Haoyang <mahaoyang7...@163.com>:
Here is the bug-triggered code snippet in the file uploaded class A: def __init__(self, b=[]): print('b = ', b) self.a = b for i in range(3): a = A() a.a.append(1) print(a.a) It seems that when I pass a list "b" to __init__ function with default value empty list. Every time I create a new instance of this class and append one new variable to "self.a", the default value of "b" changed at the next time I create another instance of class A. The outcome of this code snippet is a = [] [1] a = [1] [1, 1] a = [1, 1] [1, 1, 1] I am new to python. Is it a legal behavior in python? If yes, what is the principle beneath it? Thanks in advance! ---------- files: test.py messages: 384765 nosy: haoyang9804 priority: normal severity: normal status: open title: __init__ function may incur an incorrect behavior if passing a list as a parameter and set its default value as empty type: behavior versions: Python 3.9 Added file: https://bugs.python.org/file49732/test.py _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue42883> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com