Class Help
Peter
peter at commonlawgov.org
Sat Oct 1 22:08:54 EDT 2005
Ivan Shevanski wrote:
>To continue with my previous problems, now I'm trying out classes. But I
>have a problem (which I bet is easily solveable) that I really don't get.
>The numerous tutorials I've looked at just confsed me.For intance:
>
>
>
>>>>class Xyz:
>>>>
>>>>
>... def y(self):
>... q = 2
>...
>
>
>>>>Xyz.y()
>>>>
>>>>
>Traceback (most recent call last):
> File "<stdin>", line 1, in ?
>TypeError: unbound method y() must be called with Xyz instance as first
>argument
>(got nothing instead)
>
>
>So. . .What do I have to do? I know this is an extremley noob question but I
>think maybe if a person explained it to me I would finally get it =/
>
>
>
You have to create an instance of the class before it can be called. Ex:
class foo:
def bar(self):
print "Hello, World!"
foo().bar()
This is because foo is a reference to a classobj, however, when you call
the class, it becomes an instance.
Ex:
>>> type(foo)
<type 'classobj'>
>>> type(foo())
<type 'instance'>
When an instance is created it tells Python to pass the instance as the
first argument (self).
Otherwise it gives it None or something similer. (Note that im not 100%
sure about why it does'nt work, im just guessing from the way it _seems_
to work. I have read no documentation on this.
If you want it to work before you create an instance, then you can do
that with
class foo:
@classmethod
def bar(self):
print "Hello, World!"
or the older (but exactly the same):
class foo:
def bar(self):
print "Hello, World!"
bar = classmethod(bar)
>thanks in advance,
>
>-Ivan
>
>
>
HTH,
Peter
More information about the Python-list
mailing list