[prev in list] [next in list] [prev in thread] [next in thread]
List: ruby-talk
Subject: Re: Is better to subclass or to add methods to an existing class?
From: Paul Brannan <pbrannan () atdesk ! com>
Date: 2002-09-19 13:36:10
[Download RAW message or body]
On Thu, Sep 19, 2002 at 09:20:13PM +0900, Vincent Foley wrote:
> But my friend told me that Python didn't have that because it was not a
> good thing and it was not the proper way to do it. He said that the
> true way of doing it, is to subclass (since Python 2.2 can now subclass
> builtin types) the base class:
1) He is right that adding methods to an already-defined class is
generally a bad idea. There are some valid reasons to do that, but
99% of the time there is an alternative.
Subclassing is one such alternative. Extending an instance of a
class is another alternative. Creating a new method that takes your
object as an explicit parameter instead of as an implicit parameter
is a third alternative.
2) Correct me if I'm wrong, but I think python does let you add methods
at run-time:
[pbrannan@zaphod pbrannan]$ python
Python 2.2.1c2 (#1, Apr 8 2002, 18:12:08)
[GCC 3.0.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class Foo:
... def foo(self):
... print "foo!"
...
>>> f = Foo()
>>> f.foo()
foo!
>>> f.bar()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: Foo instance has no attribute 'bar'
>>> def bar(self):
... print "bar!"
...
>>> Foo.__dict__['bar'] = bar
>>> f.foo()
foo!
>>> f.bar()
bar!
Paul
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic