Data model and attribute resolution in subclasses

Terry Reedy tjreedy at udel.edu
Sun Mar 1 15:36:48 EST 2020


On 3/1/2020 4:49 AM, Adam Preble wrote:
> Based on what I was seeing here, I did some experiments to try to understand better what is going on:
> 
> class BaseClass:
>      def __init__(self):
>          self.a = 1
> 
>      def base_method(self):
>          return self.a
> 
>      def another_base_method(self):
>          return self.a + 1
> 
> 
> class SubClass(BaseClass):
>      def __init__(self):
>          super().__init__()
>          self.b = 2
> 
> 
> c = SubClass()
> print(c.__dict__)
> print(c.__class__.__dict__)
> print(c.__class__.__subclasses__())
> print(c.__class__.mro())
> print(c.__class__.mro()[1].__dict__)
> print(getattr(c, "base_method"))
> print(c.b)
> print(c.a)

> print(c.__class__.__subclasses__())
> []
> What?! Why isn't this [<class '__main__.BaseClass'>]?

Because BaseClass is the superclass of SubClass.


-- 
Terry Jan Reedy



More information about the Python-list mailing list