from calendar import* doesn't import everything
Kiuhnm
kiuhnm03.4t.yahoo.it
Tue Apr 24 20:26:18 EDT 2012
On 4/25/2012 1:54, Rotwang wrote:
> On 25/04/2012 00:42, Kiuhnm wrote:
>> On 4/25/2012 1:18, Rotwang wrote:
>>> Sorry if this is a stupid question, but what is up with this:
>>>
>>> >>> from calendar import*
>>> >>> Calendar
>>>
>>> Traceback (most recent call last):
>>> File "<pyshell#9>", line 1, in<module>
>>> Calendar
>>> NameError: name 'Calendar' is not defined
>>> >>> from calendar import Calendar
>>> >>> Calendar
>>> <class 'calendar.Calendar'>
>>>
>>> ?
>>
>> calendar.py defines __all__ this way:
>>
>> __all__ = ["IllegalMonthError", "IllegalWeekdayError", "setfirstweekday",
>> "firstweekday", "isleap", "leapdays", "weekday", "monthrange",
>> "monthcalendar", "prmonth", "month", "prcal", "calendar",
>> "timegm", "month_name", "month_abbr", "day_name", "day_abbr"]
>>
>> Only those names are imported with '*'.
>>
>> Kiuhnm
>
> Oh, I didn't realise modules could do that. Thanks.
>
> Do you know what the rationale behind not including 'Calendar' is?
Let's see... at line 561 of calendar.py there's something suspicious:
--->
# Support for old module level interface
c = TextCalendar()
firstweekday = c.getfirstweekday
def setfirstweekday(firstweekday):
try:
firstweekday.__index__
except AttributeError:
raise IllegalWeekdayError(firstweekday)
if not MONDAY <= firstweekday <= SUNDAY:
raise IllegalWeekdayError(firstweekday)
c.firstweekday = firstweekday
monthcalendar = c.monthdayscalendar
prweek = c.prweek
week = c.formatweek
weekheader = c.formatweekheader
prmonth = c.prmonth
month = c.formatmonth
calendar = c.formatyear
prcal = c.pryear
<---
So, it seems that "from calendar import *" is reserved for the "old
interface" (i.e. non-OO).
Kiuhnm
More information about the Python-list
mailing list