[Python] Why don't my subclass instances contain the attributes from the base class (causing...

Discussão em 'Python' iniciado por Stack, Janeiro 13, 2025.

  1. Stack

    Stack Membro Participativo

    I have this base class and subclass:

    class Event:
    def __init__(self, sr1=None, foobar=None):
    self.sr1 = sr1
    self.foobar = foobar


    # Event class wrappers to provide syntatic sugar
    class TypeTwoEvent(Event):
    def __init__(self, level=None):
    self.sr1 = level


    Later on, when I try to check the foobar attribute of a TypeTwoEvent instance, I get an exception. For example, testing this at the REPL:

    >>> event = TypeTwoEvent()
    >>> event.foobar
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: 'TypeTwoEvent' object has no attribute 'foobar'


    I thought that the base class attributes would be inherited by the subclass and that creating an instance of a subclass would instantiate the base class (and thus invoke its constructor). Therefore, I expected the foobar attribute value to be defaulted to None.

    Why do TypeTwoEvent instances not have a foobar attribute, even though Event instances do?

    Continue reading...

Compartilhe esta Página