[python-nl] extending classes
Chris Niekel
chris at niekel.net
Wed Apr 19 19:28:54 CEST 2006
On Wed, Apr 19, 2006 at 09:42:56AM -0700, UnrealEd wrote:
> > Ik zou alleen aanraden de Python tutorial uitvoerig te bestuderen, dit zal
> je goed op
> > weg helpen (en is leuk leesvoer!).
>
> die zal me inderdaad wel wat op weg brengen, maar ik vind de voorbeelden
> niet zo schitterend.
> Of het leuk leesvoer is, daar houd ik een andere mening aan over :)
De python tutorial is in wiki-vorm gezet, zodat meer mensen het kunnen
verbeteren. Ik heb al wat dingetjes verbeterd, maar als je wat duidelijker
aan kunt geven welke de slechtste voorbeelden zijn, of hoe het verbeterd
zou kunnen worden, dan kan je dat natuurlijk hier posten, dan kunnen
anderen daar weer mee aan de slag op http://pytut.infogami.com/
Je mag het natuurlijk ook zelf doen, maar als je net python wil leren, heb
je andere prioriteiten. :)
> hoe dan ook, bedankt.
> ik heb echter nog een klein probleempje. hier een klein voorbeeldje:
>
> hier een eerste class, die als parent fungeert voor de tweede
> class test:
> def __init__(self):
> print "dit is de class test die de parent is van class test2"
>
> hier een tweede class:
> import test
> class test2(test):
> def __init__(self):
> print "wanneer ik deze aanroep, met er nog een print komen\n\n"
>
Met "import test" importeer je de module (test.py) waarin de class test
gedefinieerd wordt. Wat je zou kunnen doen is:
from test import test
of
import test
class test2(test.test):
...
Elke file is gelijk een module, en met import importeer je de module.
Dan moet je module.class gebruiken.
Als je het in 1 file zet, of in 1x interactief intypt:
$ python
Python 2.3.5 (#2, Mar 6 2006, 10:12:24)
[GCC 4.0.3 20060304 (prerelease) (Debian 4.0.2-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class test:
... def __init__(self):
... print 'parent'
...
>>> class test2(test):
... def __init__(self):
... print 'child'
...
>>> t = test2()
child
>>>
Bij mij werkt het nu wel. Je zou natuurlijk verwachten dat ook 'parent'
afgedrukt zou worden, maar 'explicit is better than implicit'.
Dus je moet schrijven:
>>> class test3(test):
... def __init__(self):
... test.__init__(self) # zelf de parent aanroepen
... print 'child'
Maar dit is ook nog niet zo fraai, nu moet je 2x aangeven dat je vast
'test' erft. Dat gaat met 'super', maar daar weet ik nu de syntax even niet
van.
Groet,
Chris
--
I've been down so long, if I'd cheer up, I'd still be depressed.
- Lisa Simpson, Moanin' Lisa Blues.
More information about the Python-nl
mailing list