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.
if you look at the end of datetime.py
, 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With