[issue42768] super().__new__() of list expands arguments
Richard Neumann
report at bugs.python.org
Mon Dec 28 11:23:51 EST 2020
New submission from Richard Neumann <mail at richard-neumann.de>:
When sublassing the built-in list, the invocation of super().__new__ will unexpectedly expand the passed arguments:
class MyTuple(tuple):
def __new__(cls, *items):
print(cls, items)
return super().__new__(cls, items)
class MyList(list):
def __new__(cls, *items):
print(cls, items)
return super().__new__(cls, items)
def main():
my_tuple = MyTuple(1, 2, 3, 'foo', 'bar')
print('My tuple:', my_tuple)
my_list = MyList(1, 2, 3, 'foo', 'bar')
print('My list:', my_list)
if __name__ == '__main__':
main()
Actual result:
<class '__main__.MyTuple'> (1, 2, 3, 'foo', 'bar')
My tuple: (1, 2, 3, 'foo', 'bar')
<class '__main__.MyList'> (1, 2, 3, 'foo', 'bar')
Traceback (most recent call last):
File "/home/neumann/listbug.py", line 24, in <module>
main()
File "/home/neumann/listbug.py", line 19, in main
my_list = MyList(1, 2, 3, 'foo', 'bar')
TypeError: list expected at most 1 argument, got 5
Expected:
<class '__main__.MyTuple'> (1, 2, 3, 'foo', 'bar')
My tuple: (1, 2, 3, 'foo', 'bar')
<class '__main__.MyList'> (1, 2, 3, 'foo', 'bar')
My list: [1, 2, 3, 'foo', 'bar']
----------
components: ctypes
messages: 383902
nosy: conqp
priority: normal
severity: normal
status: open
title: super().__new__() of list expands arguments
type: behavior
versions: Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue42768>
_______________________________________
More information about the Python-bugs-list
mailing list