Mailing List Archive
tlug.jp Mailing List tlug archive tlug Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]Re: [tlug] ruby and python in Japan
- Date: Mon, 26 Feb 2007 13:33:17 +0900
- From: "Stephen J. Turnbull" <stephen@??>
- Subject: Re: [tlug] ruby and python in Japan
- References: <45E16CA8.2010909@example.com> <20070225122334.GA10626@example.com> <87r6sdk5o7.fsf@example.com> <op.tob5a2bbrtshzt@example.com>
Zev Blut writes: > Well, this is not restrictive but an annoying aspect is that you must > explicitly declare self in all of your instance methods. It makes the > OO aspect of Python feel tacked on. Ah, you haven't drunk the Kool-Aid. This is an instance of "explicit is better than implicit." I think you should check your mental model of OO. I'm not saying that your annoyance is unwarranted---whatever makes you more productive works for me. My point is that OO and implicit arguments are independent constructs. What I do find mendoukusai is that member names don't get special treatment in members, eg, class SimpleDate: def __init__ (self, year, month, day): self.year = year self.month = month self.day = day OTOH, this idiom is very clear to me as a reader, and the member names don't need explicitly declaration as in (say) C++. I got used to it. It would be easy to write an auto-init constructor in XEmacs that parses the __init_ signature and automagically inserts "SELFNAME.MEMBERNAME = MEMBERNAME" where SELFNAME is the first argument, and MEMBERNAME iterates over the rest of the arguments. > > What's the use-case for changing a class on the fly? > > In most cases it is not a good thing, but there are times when it can > be very useful. For example, if a standard API is broken you can > simply open the class (such as cgi) and redefine a working method. > Then, while you are waiting for the fixed patch to be accepted into > ruby core you can keep using your monkey patch. Python has been monkey-patching since before Ruby was invented. The fact that it's not trivial to do is a good thing, IMO. > Also, Rails does some fun stuff with dates and numbers such as > "5.days_from_now". In Python you could spell that from DateTime import date five_days_from_now = date.today() + 5 So you're exactly right; it's "fun", but lack of it doesn't hinder serious work by very much. How much? This much: you'd like to write from DateTime.date import today later = today() + 5 but today is overloaded: from DateTime.datetime import today later = today() + 5 The Ruby version does have the advantage that by monkey-patching the Integer class you can put the units in the method name. I'd have to work with it to decide whether that's a convenience or a trap for me. N.B. The parens on "today()" is the way that "volatile" is spelled in Python; it's possible to define computed attributes as long as the computation requires no arguments.
- Follow-Ups:
- Re: [tlug] ruby and python in Japan
- From: Zev Blut
- References:
- [tlug] ruby and python in Japan
- From: Micheal Cooper
- Re: [tlug] ruby and python in Japan
- From: Dave Brown
- Re: [tlug] ruby and python in Japan
- From: Stephen J. Turnbull
- Re: [tlug] ruby and python in Japan
- From: Zev Blut
Home | Main Index | Thread Index
- Prev by Date: Re: [tlug] ruby and python in Japan
- Next by Date: Re: [tlug] ruby and python in Japan
- Previous by thread: Re: [tlug] ruby and python in Japan
- Next by thread: Re: [tlug] ruby and python in Japan
- Index(es):
Home Page Mailing List Linux and Japan TLUG Members Links