Why can't I access the private variables of the superclass in Python?
Question: I know that I _should_ use the access methods. I see in the `datetime` module
that the class `datetime` inherits from date.

    
    
    class datetime(date):
        <some other code here....>
        self = date.__new__(cls, year, month, day)
        self._hour = hour
        self._minute = minute
        self._second = second
        self._microsecond = microsecond
        self._tzinfo = tzinfo
        return self
    

I also see that datetime is able to access the members of date, as in
`__repr__`:

    
    
    def __repr__(self):
        """Convert to formal string, for repr()."""
        L = [self._year, self._month, self._day, # These are never zero
             self._hour, self._minute, self._second, self._microsecond]
    

I tried to subclass datetime to add some information to it and then write a
similar `__repr__` function:

    
    
    def __repr__(self):
        """Convert to formal string, for repr()."""
        L = [self._year, self._month, self._day, # These are never zero
             self._hour, self._minute, self._second, self._microsecond,
             self._latitude, self._longitude]
    

The debugger complained that self._year didn't exist. (`self.year` works,
however.)

I know that I _should_ be using the access function. I just want to understand
why `datetime` is able to access the private variables of `date` but my
subclass isn't able.


Answer: if you look at the [end of
`datetime.py`](http://hg.python.org/cpython/file/1bee3da9a305/Lib/datetime.py#l2094),
you'll see this:

    
    
    try:
        from _datetime import *
    except ImportError:
        pass
    

this imports among other things the C-version of the previously defined python
classes, which will therefore be used, and those don't have the members you're
trying to access.

