File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -188,7 +188,7 @@ def __subclasscheck__(cls, subclass):
188188 cls ._abc_negative_cache .add (subclass )
189189 return ok
190190 # Check if it's a direct subclass
191- if cls in subclass . __mro__ :
191+ if cls in getattr ( subclass , ' __mro__' , ()) :
192192 cls ._abc_cache .add (subclass )
193193 return True
194194 # Check if it's a subclass of a registered class (recursive)
Original file line number Diff line number Diff line change 88from test import test_support
99
1010import abc
11- __metaclass__ = type
1211
1312
1413class TestABC (unittest .TestCase ):
@@ -59,10 +58,18 @@ def bar(self): pass # abstract override of concrete
5958 self .assertEqual (F .__abstractmethods__ , set (["bar" ]))
6059 self .assertRaises (TypeError , F ) # because bar is abstract now
6160
61+ def test_subclass_oldstyle_class (self ):
62+ class A :
63+ __metaclass__ = abc .ABCMeta
64+ class OldstyleClass :
65+ pass
66+ self .assertFalse (issubclass (OldstyleClass , A ))
67+ self .assertFalse (issubclass (A , OldstyleClass ))
68+
6269 def test_registration_basics (self ):
6370 class A :
6471 __metaclass__ = abc .ABCMeta
65- class B :
72+ class B ( object ) :
6673 pass
6774 b = B ()
6875 self .assertEqual (issubclass (B , A ), False )
@@ -95,7 +102,7 @@ class A:
95102 class A1 (A ):
96103 pass
97104 self .assertRaises (RuntimeError , A1 .register , A ) # cycles not allowed
98- class B :
105+ class B ( object ) :
99106 pass
100107 A1 .register (B ) # ok
101108 A1 .register (B ) # should pass silently
@@ -136,7 +143,7 @@ class MyInt(int):
136143 def test_all_new_methods_are_called (self ):
137144 class A :
138145 __metaclass__ = abc .ABCMeta
139- class B :
146+ class B ( object ) :
140147 counter = 0
141148 def __new__ (cls ):
142149 B .counter += 1
You can’t perform that action at this time.
0 commit comments