Skip to content

Commit 66ab571

Browse files
committed
tests: Update subclass-native2.py for __new__/__init__ refactor.
Now case of subclassing tuple works, and list is broken, see comments.
1 parent 13684fd commit 66ab571

3 files changed

Lines changed: 47 additions & 37 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Base1:
2+
def __init__(self, *args):
3+
print("Base1.__init__", args)
4+
5+
class Clist1(Base1, list):
6+
pass
7+
8+
a = Clist1()
9+
print(len(a))
10+
# Not compliant - list assignment should happen in list.__init__, which is not called
11+
# because there's Base1.__init__, but we assign in list.__new__
12+
#a = Clist1([1, 2, 3])
13+
#print(len(a))
14+
15+
print("---")
16+
17+
class Clist2(list, Base1):
18+
pass
19+
20+
# Not compliant - should call list.__init__, but we don't have it
21+
#a = Clist2()
22+
#print(len(a))
23+
24+
# Not compliant - should call list.__init__, but we don't have it
25+
#a = Clist2([1, 2, 3])
26+
#print(len(a))
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Base1:
2+
def __init__(self, *args):
3+
print("Base1.__init__", args)
4+
5+
class Ctuple1(Base1, tuple):
6+
pass
7+
8+
a = Ctuple1()
9+
print(len(a))
10+
a = Ctuple1([1, 2, 3])
11+
print(len(a))
12+
13+
print("---")
14+
15+
class Ctuple2(tuple, Base1):
16+
pass
17+
18+
a = Ctuple2()
19+
print(len(a))
20+
a = Ctuple2([1, 2, 3])
21+
print(len(a))

tests/basics/subclass-native2.py

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)