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