From rr at nederhoed.com Wed Apr 12 12:49:51 2006 From: rr at nederhoed.com (rr at nederhoed.com) Date: Wed, 12 Apr 2006 12:49:51 +0200 Subject: [python-nl] mx.DateTime naar datetime en vice versa Message-ID: <20060412124951.rs67h98hbi3tkccc@webmail.nederhoed.com> Goedemiddag dames en heren, Ik breek mijn hoofd hier over een (efficiente) conversie van datetime en mx.DateTime, naar elkaar. Nu heb ik: mx naar datetime: datetime.datetime.fromtimestamp(datum.ticks()) datetime naar mx: mx.DateTime.DateTime(*datum.timetuple()[:6]) De bovenste levert een probleem op bij data in de verre toekomst: mx.DateTime.Date(2071, 4, 3).ticks() geeft mx.DateTime.Error: cannot convert value to a time value En het lijkt ook geen nette oplossing. Wie helpt? Merci, Robert-Reinder -- From rr at nederhoed.com Wed Apr 12 15:27:42 2006 From: rr at nederhoed.com (rr at nederhoed.com) Date: Wed, 12 Apr 2006 15:27:42 +0200 Subject: [python-nl] mx.DateTime naar datetime en vice versa In-Reply-To: <20060412124951.rs67h98hbi3tkccc@webmail.nederhoed.com> References: <20060412124951.rs67h98hbi3tkccc@webmail.nederhoed.com> Message-ID: <20060412152742.8vn8c4l1280048g8@webmail.nederhoed.com> Ik ben een stapje verder. Met behulp van http://docs.python.org/lib/datetime-tzinfo.html http://www.egenix.com/files/python/mxDateTime.html Ik ben blij met de oplossing, maar van de netheid ben ik nog niet zo zeker. Voor wie het interesseert, de code volgt hieronder. Groeten uit een zonnig Den Haag, Robert-Reinder # Imports import datetime import mx.DateTime # Voor tz info ZERO = datetime.timedelta(0) class UTC(datetime.tzinfo): """UTC implementatie van abstracte klasse tz_info Zie http://docs.python.org/lib/datetime-tzinfo.html """ def utcoffset(self, dt): "UTC timezonde offset is 0" return ZERO def tzname(self, dt): "Naam van de timezone: UTC " return "UTC" def dst(self, dt): "Geen Daylight Savings Time " return ZERO # tz_utc = UTC() def datetime_from_mx(datum): """Geeft de python.datetime terug voor de gegeven mx.DateTime datum.gmticks() geeft het aantal seconden sinds 1970-01-01 00:00 UTC Vandaar dat we de UTC Timezone Information (tz_utc) meegeven bij het terugvertalen naar een datetime type met 'fromtimestamp' De replace(tzinfo=None) maakt expliciet dat we met een local datetime werken """ return datetime.datetime.fromtimestamp(datum.gmticks(), tz=tz_utc).replace(tzinfo=None) def mx_from_datetime(datum): """Geeft de python.datetime terug voor de gegeven mx.DateTime TODO: netter Deze geeft de argumenten 1 voor 1 door """ return mx.DateTime.DateTime(*datum.timetuple()[:6]) -- R.R. Nederhoed (rr at nederhoed.com) From Jack.Jansen at cwi.nl Tue Apr 18 13:33:26 2006 From: Jack.Jansen at cwi.nl (Jack Jansen) Date: Tue, 18 Apr 2006 13:33:26 +0200 Subject: [python-nl] Python presence op de SANE open source bazaar? References: <20060418103221.GE6343@earth.overmeer.net> Message-ID: Ik dacht dat ik dit verzoek al geforward had, maar aangezien de archives het niet met me eens zijn ben ik het kennelijk vergeten (bloos), dus bij deze. Op de SANE conferentie (www.sane.nl, 15-19 mei in Delft) is op woensdagavond een "Open Source Bazar", een voor iedereen vrij toegankelijke markt waar open source gebruikersgroepen, projecten, etc. zich presenteren. Twee jaar geleden heb ik daar gestaan om Python en de PSF te promoten, maar dit jaar heb ik voor SANE al te veel petten tegelijk op (lid programmacommissie en lid postercommissie), dus ik wou het dit jaar maar laten schieten (of, in ieder geval, niet de hoofdverantwoordelijke zijn). Python-presence op de bazar is echter wel een goed idee, zeker omdat Perl ook uitpakt, zoals Mark schrijft:-) Zijn er mensen die hier wat tijd in willen en kunnen steken? De avond zelf is heel weinig werk: van 18.30 tot 22.00 uur bij een tafel/ poster staan en kletsen over Python en de Python-community, maar er is wel wat voorbereidingstijd nodig: bedenken wat je wilt uitdragen (PUN? PSF? Python? Alle drie?), postertje of ander materiaal voor op de achterwand maken, etc. Zoals gezegd: ik wil graag meehelpen maar ik wil niet de eindverantwoordelijke zijn. Begin forwarded message: > From: Mark Overmeer > Date: 18 april 2006 12:32:21 GMT+02:00 > To: Jack Jansen > Subject: Nog een poging > > > > Jack, > > Ik heb jou twee keer een uitnodiging gestuurd vanwege de Free Software > Bazaar, maar daar niets op gehoord. Zou je zo vriendelijk willen zijn > mij toch wat verder op weg te helpen. > > Vanwege de Free Software Bazaar tijdens SANE (waar jij vast ook > naar toe > gaat) zoek ik contact met de Python gebruikersgroep in Nederland. > Ik was > in de veronderstelling dat jij daar ook een rol in speelt. > > Als jij er niet (meer) bij hoort, zou je me dan kunnen vertellen > bij wie ik moet aankloppen? Het lijkt me aardig om de verschillende > programmeertaal groepjes uit nederland naast elkaar te zetten. De Perl > mensen zijn al overduidelijk aanwezig, maar er is natuurlijk veel meer > onder de zon. > -- > Met vriendelijke groet, > > MarkOv > > ---------------------------------------------------------------------- > -- > drs Mark A.C.J. Overmeer MARKOV > Solutions > Mark at Overmeer.net > solutions at overmeer.net > http://Mark.Overmeer.net http:// > solutions.overmeer.net -- Jack Jansen, , http://www.cwi.nl/~jack If I can't dance I don't want to be part of your revolution -- Emma Goldman -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2255 bytes Desc: niet beschikbaar Url : http://mail.python.org/pipermail/python-nl/attachments/20060418/773f10ec/attachment.bin From edunreal at gmail.com Wed Apr 19 13:03:39 2006 From: edunreal at gmail.com (UnrealEd) Date: Wed, 19 Apr 2006 04:03:39 -0700 (PDT) Subject: [python-nl] extending classes Message-ID: <3985353.post@talk.nabble.com> gegroet allen, een klein vraagje: bestaat er in python zoiets als "extends" om classes te extenden, zoals in java, php, e.d? mvg, UnrealEd -- View this message in context: http://www.nabble.com/extending-classes-t1473655.html#a3985353 Sent from the Python - python-nl forum at Nabble.com. From remco at gerlich.nl Wed Apr 19 13:13:53 2006 From: remco at gerlich.nl (Remco Gerlich) Date: Wed, 19 Apr 2006 13:13:53 +0200 Subject: [python-nl] extending classes In-Reply-To: <3985353.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> Message-ID: <44461B71.10205@gerlich.nl> UnrealEd wrote: >gegroet allen, > >een klein vraagje: >bestaat er in python zoiets als "extends" om classes te extenden, zoals in >java, php, e.d? > > Ja, je kunt tussen haakjes aangeven wat de superclasses van een class zijn: class Tafel (Meubel): ... Zie hoofdstuk 9.5 van de tutorial. Remco From guido at infrae.com Wed Apr 19 13:19:21 2006 From: guido at infrae.com (Guido Wesdorp) Date: Wed, 19 Apr 2006 13:19:21 +0200 Subject: [python-nl] extending classes In-Reply-To: <3985353.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> Message-ID: <44461CB9.1060204@infrae.com> UnrealEd wrote: >een klein vraagje: >bestaat er in python zoiets als "extends" om classes te extenden, zoals in >java, php, e.d? > > > Ik zou graag (nogmaals) de aandacht willen vestigen op de uitstekende Python tutorial: http://www.python.org/doc/current/tut/tut.html Hierin staat overerving netjes en duidelijk beschreven: http://www.python.org/doc/current/tut/node11.html#SECTION0011500000000000000000 Een kleine 'RTFM' van mijn kant, aangezien (imo, misschien alleen in de mijne?) dit een wel erg eenvoudig op te zoeken vraag is... Anyway, wel succes met je experimenten, en natuurlijk betekent dit niet dat ik vind dat er geen vragen gesteld moeten worden! Ik zou alleen aanraden de Python tutorial uitvoerig te bestuderen, dit zal je goed op weg helpen (en is leuk leesvoer!). Groeten, Guido From edunreal at gmail.com Wed Apr 19 18:42:56 2006 From: edunreal at gmail.com (UnrealEd) Date: Wed, 19 Apr 2006 09:42:56 -0700 (PDT) Subject: [python-nl] extending classes In-Reply-To: <44461CB9.1060204@infrae.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> Message-ID: <3991448.post@talk.nabble.com> > 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 :) 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" wanneer ik nu echter met het volgende commando: test2() de class test2 aanroep krijg ik de volgende error: module.__init__() takes at most 2 arguments (3 given) waarbij ik niet snap hoe hij aan 3 komt. in de class test2 wordt enkel self "ingevoerd" en in test ook zo. moet ik in de class test2, in de constructor dan ook de parentclass invoeren, als volgt: import test class test2(test): def __init__(self, test): print "wanneer ik deze aanroep, met er nog een print komen\n\n" indien ja, waarom juist? mvg, UnrealEd -- View this message in context: http://www.nabble.com/extending-classes-t1473655.html#a3991448 Sent from the Python - python-nl forum at Nabble.com. From chris at niekel.net Wed Apr 19 19:28:54 2006 From: chris at niekel.net (Chris Niekel) Date: Wed, 19 Apr 2006 19:28:54 +0200 Subject: [python-nl] extending classes In-Reply-To: <3991448.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> Message-ID: <20060419172854.GN17400@kira.niekel.net> 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. From frank at niessink.com Wed Apr 19 19:26:07 2006 From: frank at niessink.com (Frank Niessink) Date: Wed, 19 Apr 2006 19:26:07 +0200 Subject: [python-nl] extending classes In-Reply-To: <3991448.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> Message-ID: <444672AF.3090008@niessink.com> UnrealEd: > > 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 test is ook een standaard module van python. Het zou kunnen dat die module wordt geimporteerd en niet je eigen test.py file. Je kunt dat testen door na import test, print test.__file__ te doen. Anyway, dit zou moeten werken: in module1.py: class test(object): def __init__(self): print 'init test' in module2.py: import module1 class test2(module1.test): def __init__(self): # roep de initializer van de parent class aan: super(test2, self).__init__() print 'init test2' Groet, Frank From edunreal at gmail.com Wed Apr 19 19:44:35 2006 From: edunreal at gmail.com (UnrealEd) Date: Wed, 19 Apr 2006 10:44:35 -0700 (PDT) Subject: [python-nl] extending classes In-Reply-To: <444672AF.3090008@niessink.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <444672AF.3090008@niessink.com> Message-ID: <3992686.post@talk.nabble.com> > 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/ het is niet "slecht", ik heb mijn woorden daar verkeed gekozen. ik zou eerder zeggen dat ze misschien iets te theoretisch zijn. ik zou bij elk thema een voorbeeldje zetten in de aard van foo, bar, hello world en dat soort zaken, waarbij er dan duidelijk bij staat wat de output is van de code en waarom het juist zo moet gedaan worden. neem bijvoorbeeld het voorbeeld dat bij dit thema past: extenden an classes. het staat er mooi theoretisch, maar er staat niet bij dat je de constructor van uw parent class dient aan te roepen in je childclass. bedankt in ieder geval voor jullie hulp. ik had het ook even verkeerd voor met het concept extenden, maar dat is nu veel duidelijker geworden. ik dacht namelijk dat je de childclasses kon aanroepen vanuit de parent class, terwijl het omgekeerde gedaan moet worden, wat eigenlijk veel logischer is :) mvg, UnrealEd -- View this message in context: http://www.nabble.com/extending-classes-t1473655.html#a3992686 Sent from the Python - python-nl forum at Nabble.com. From lists at janc.be Wed Apr 19 21:31:14 2006 From: lists at janc.be (Jan Claeys) Date: Wed, 19 Apr 2006 21:31:14 +0200 Subject: [python-nl] extending classes In-Reply-To: <3992686.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <444672AF.3090008@niessink.com> <3992686.post@talk.nabble.com> Message-ID: <1145475074.12589.111.camel@localhost.localdomain> Op wo, 19-04-2006 te 10:44 -0700, schreef UnrealEd: > neem bijvoorbeeld het voorbeeld dat bij dit thema past: extenden an classes. > het staat er mooi theoretisch, maar er staat niet bij dat je de constructor > van uw parent class dient aan te roepen in je childclass. Het aanroepen van de constructor in de parent class is dan ook niet verplicht, het is wel een mogelijkheid. ;-) -- Jan Claeys From guido at infrae.com Thu Apr 20 02:07:15 2006 From: guido at infrae.com (Guido Wesdorp) Date: Thu, 20 Apr 2006 02:07:15 +0200 Subject: [python-nl] extending classes In-Reply-To: <20060419172854.GN17400@kira.niekel.net> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> Message-ID: <4446D0B3.9040709@infrae.com> Chris Niekel wrote: > 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. > Syntax is super(, ), voorbeeld: def test3(test): def __init__(self): super(test3, self).__init__() Heeft als voordeel dat het opzoeken van de base class waarop de method wordt aangeroepen door Python wordt uitgezocht, en (als het goed is) ook netjes wordt omgegaan met multiple inheritance situaties waarin een method met dezelfde naam op meerdere base classes aanwezig is. Ik ben ditk in de tutorial inderdaad niet tegen gekomen overigens, al heb ik ook niet al te hard gezocht... Groeten, Guido From chris at niekel.net Thu Apr 20 09:45:12 2006 From: chris at niekel.net (Chris Niekel) Date: Thu, 20 Apr 2006 09:45:12 +0200 Subject: [python-nl] extending classes In-Reply-To: <4446D0B3.9040709@infrae.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> Message-ID: <20060420074511.GO17400@kira.niekel.net> On Thu, Apr 20, 2006 at 02:07:15AM +0200, Guido Wesdorp wrote: > Syntax is super(, ), voorbeeld: Dat dacht ik ook, maar ik krijg een error. > def test3(test): > def __init__(self): > super(test3, self).__init__() >>> class test5(test): ... def __init__(self): ... super(test5,self).__init__() ... print 'test5' ... >>> t = test5() Traceback (most recent call last): File "", line 1, in ? File "", line 3, in __init__ TypeError: super() argument 1 must be type, not classobj En wat nou het verschil tussen een type en een classobj is, geen idee. Dit gaat fout in python 2.3 en 2.4 Groet, Chris From guido at infrae.com Thu Apr 20 10:16:31 2006 From: guido at infrae.com (Guido Wesdorp) Date: Thu, 20 Apr 2006 10:16:31 +0200 Subject: [python-nl] extending classes In-Reply-To: <20060420074511.GO17400@kira.niekel.net> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> Message-ID: <4447435F.2040700@infrae.com> Chris Niekel wrote: > TypeError: super() argument 1 must be type, not classobj > Ah, er wordt niet van 'object' gesubclassed... >>> class test1(object): ... def __init__(self): ... pass ... >>> class test2(test1): ... def __init__(self): ... super(test2, self).__init__() ... >>> test2() <__main__.test2 object at 0xb7aa574c> 'super' werkt alleen bij 'new style classes', oftewel als je van 'object' subclassed (aan te raden, brengt een hoop fijnigheid). Cheers, Guido From ronaldoussoren at mac.com Thu Apr 20 10:08:10 2006 From: ronaldoussoren at mac.com (Ronald Oussoren) Date: Thu, 20 Apr 2006 10:08:10 +0200 Subject: [python-nl] extending classes In-Reply-To: <20060420074511.GO17400@kira.niekel.net> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> Message-ID: On 20-apr-2006, at 9:45, Chris Niekel wrote: > On Thu, Apr 20, 2006 at 02:07:15AM +0200, Guido Wesdorp wrote: >> Syntax is super(, ), voorbeeld: > > Dat dacht ik ook, maar ik krijg een error. > >> def test3(test): >> def __init__(self): >> super(test3, self).__init__() > >>>> class test5(test): > ... def __init__(self): > ... super(test5,self).__init__() > ... print 'test5' > ... >>>> t = test5() > Traceback (most recent call last): > File "", line 1, in ? > File "", line 3, in __init__ > TypeError: super() argument 1 must be type, not classobj > > En wat nou het verschil tussen een type en een classobj is, geen idee. > Dit gaat fout in python 2.3 en 2.4 Super werkt alleen als de klasse een new-style klasse is. Dat houdt in dit geval in dat test een subklasse van object moet zijn. Ronald From mj at python.org Thu Apr 20 09:59:16 2006 From: mj at python.org (Martijn Pieters) Date: Thu, 20 Apr 2006 09:59:16 +0200 Subject: [python-nl] extending classes In-Reply-To: <20060420074511.GO17400@kira.niekel.net> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> Message-ID: <44473F54.30000@python.org> Chris Niekel wrote: > TypeError: super() argument 1 must be type, not classobj > > En wat nou het verschil tussen een type en een classobj is, geen idee. > Dit gaat fout in python 2.3 en 2.4 De root classe van de inheritence boom moet object zijn: class test(object) Zie http://docs.python.org/lib/built-in-funcs.html#l2h-70: "super() only works for new-style classes." Martijn Pieters From ep at epoz.org Thu Apr 20 11:11:19 2006 From: ep at epoz.org (Etienne Posthumus) Date: Thu, 20 Apr 2006 11:11:19 +0200 Subject: [python-nl] Job posting: Freelancer gezocht Message-ID: <747a4aea0604200211v31ef42adid198c501665020eb@mail.gmail.com> Locatie: Amsterdam Voor een project met een meerjarige looptijd zijn wij op zoek naar een freelancer met de volgende skills: - Python (uiteraard) - Web applications - Javascript / DHTML - Relational databases - Object databases Een affiniteit met classificatie systemen en cultureel erfgoed is een pluspunt. Voor meer informatie neem contact op met: Etienne Posthumus Mnemosyne t: +31 20 616 1039 m: etienne at mnemosyne.org From edunreal at gmail.com Fri Apr 28 12:56:11 2006 From: edunreal at gmail.com (UnrealEd) Date: Fri, 28 Apr 2006 03:56:11 -0700 (PDT) Subject: [python-nl] extending classes In-Reply-To: <44473F54.30000@python.org> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> Message-ID: <4138155.post@talk.nabble.com> bedankt voor de uitleg, het lukt mij nu wel aardig, maar ik heb wel een klein probleempje, zo blijkt. ik zal het aan de hand van het volgende voorbeeldje laten zien: # de test klasse: class test(object): def __init__(self): super(test, self).__init__() print "test loaded" def defineA(self): self.a = "gegroet wereld!" # de test2 klasse: class test2(test): def __init__(self): super(test2, self).__init__() self.a = str def printa(self): self.defineA() print self.a wanneer ik dit uitvoer via het volgende commando: a = test2() a.printa() print hij een lege waarde, hoewel hij via de defineA methode uit test-klasse de variabele een waarde geeft. hoe komt dit? moet die variabele niet "overgeschreven" worden naar de test2 klasse? mvg, UnrealEd -- View this message in context: http://www.nabble.com/extending-classes-t1473655.html#a4138155 Sent from the Python - python-nl forum at Nabble.com. From guido at infrae.com Fri Apr 28 13:03:47 2006 From: guido at infrae.com (Guido Wesdorp) Date: Fri, 28 Apr 2006 13:03:47 +0200 Subject: [python-nl] extending classes In-Reply-To: <4138155.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> Message-ID: <4451F693.8060908@infrae.com> UnrealEd wrote: >bedankt voor de uitleg, het lukt mij nu wel aardig, maar ik heb wel een klein >probleempje, zo blijkt. > >ik zal het aan de hand van het volgende voorbeeldje laten zien: ># de test klasse: >class test(object): > def __init__(self): > super(test, self).__init__() > print "test loaded" > > def defineA(self): > self.a = "gegroet wereld!" > > ># de test2 klasse: >class test2(test): > def __init__(self): > super(test2, self).__init__() > self.a = str > > def printa(self): > self.defineA() > print self.a >wanneer ik dit uitvoer via het volgende commando: >a = test2() >a.printa() > > Ik heb dit naar een file gekopieerd, en uitgevoerd, en het werkt prima voor mij. Uitvoer: test loaded gegroet wereld! Ik heb geen flauw idee waarom he voor jou niet werkt. Groeten, Guido -------------- next part -------------- A non-text attachment was scrubbed... Name: test.py Type: text/x-python Size: 346 bytes Desc: not available Url : http://mail.python.org/pipermail/python-nl/attachments/20060428/fb01ce52/attachment.py From eric at infrae.com Fri Apr 28 13:13:05 2006 From: eric at infrae.com (eric casteleijn) Date: Fri, 28 Apr 2006 13:13:05 +0200 Subject: [python-nl] extending classes In-Reply-To: <4451F693.8060908@infrae.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> Message-ID: <4451F8C1.2050408@infrae.com> > # de test2 klasse: > class test2(test): > def __init__(self): > super(test2, self).__init__() > self.a = str Uit pure nieuwsgierigheid: wat probeer je te doen met self.a = str ? ;) From edunreal at gmail.com Fri Apr 28 13:16:52 2006 From: edunreal at gmail.com (UnrealEd) Date: Fri, 28 Apr 2006 04:16:52 -0700 (PDT) Subject: [python-nl] extending classes In-Reply-To: <4451F8C1.2050408@infrae.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> <4451F8C1.2050408@infrae.com> Message-ID: <4138405.post@talk.nabble.com> to Guido: srry voor het storen, het werkt inderdaad. het enige wat ik heb gedaan is IDLE heropstarten en het werkte. mijn excuses hiervoor. to Eric: dat is uit gewoonte: in zowel Java, PHP, e.d is het de gewoonte (en bij Java verplicht) om de class-variabelen bovenaan de class te defini?ren. ik dacht dat ik het hier in python ook maar zou doen. plus, het geeft een mooi overzicht (zeker als je er een 30-tal hebt staan :) ). mvg, UnrealEd -- View this message in context: http://www.nabble.com/extending-classes-t1473655.html#a4138405 Sent from the Python - python-nl forum at Nabble.com. From remco at gerlich.nl Fri Apr 28 13:32:11 2006 From: remco at gerlich.nl (Remco Gerlich) Date: Fri, 28 Apr 2006 13:32:11 +0200 Subject: [python-nl] extending classes In-Reply-To: <4138405.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> <4451F8C1.2050408@infrae.com> <4138405.post@talk.nabble.com> Message-ID: <4451FD3B.8060603@gerlich.nl> UnrealEd wrote: >to Eric: >dat is uit gewoonte: in zowel Java, PHP, e.d is het de gewoonte (en bij Java >verplicht) om de class-variabelen bovenaan de class te defini?ren. ik dacht >dat ik het hier in python ook maar zou doen. plus, het geeft een mooi >overzicht (zeker als je er een 30-tal hebt staan :) ). > > Met natuurlijk de aantekening dat als je 30 class variabelen in een class hebt, het hoog tijd is om die class eens wat op te gaan ruimen en opsplitsen :-) Remco Gerlich From remco at gerlich.nl Fri Apr 28 13:37:45 2006 From: remco at gerlich.nl (Remco Gerlich) Date: Fri, 28 Apr 2006 13:37:45 +0200 Subject: [python-nl] extending classes In-Reply-To: <4138405.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> <4451F8C1.2050408@infrae.com> <4138405.post@talk.nabble.com> Message-ID: <4451FE89.9080005@gerlich.nl> UnrealEd wrote: >to Eric: >dat is uit gewoonte: in zowel Java, PHP, e.d is het de gewoonte (en bij Java >verplicht) om de class-variabelen bovenaan de class te defini?ren. ik dacht >dat ik het hier in python ook maar zou doen. plus, het geeft een mooi >overzicht (zeker als je er een 30-tal hebt staan :) ). > > Het valt me nu pas op wat je met self.a = str doet: je initialiseert de variable a door er een functie in te stoppen (str is een functie). Dat lijkt me faliekant fout, het is lastig te lezen (lezer neemt aan dat de variabele a blijkbaar een functie bevat) en je krijgt exotische foutmeldingen als je probeert het als string te gebruiken. Normaler zou zijn hem initialiseren naar een lege string of zo (self.a = ''), of hem initialiseren naar een argument van de constructor. Maar het beste lijkt mij hem helemaal niet te initialiseren, zodat je tenminste een mooie relevante foutmelding krijgt als je vergeet hem een echte waarde te geven voor je hem gebruikt. Dan kun je je class variabelen mooi als commentaar opnemen bovenaan de class, als je dat wilt... Remco Gerlich From edunreal at gmail.com Fri Apr 28 13:35:43 2006 From: edunreal at gmail.com (UnrealEd) Date: Fri, 28 Apr 2006 04:35:43 -0700 (PDT) Subject: [python-nl] extending classes In-Reply-To: <4451FD3B.8060603@gerlich.nl> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> <4451F8C1.2050408@infrae.com> <4138405.post@talk.nabble.com> <4451FD3B.8060603@gerlich.nl> Message-ID: <4138639.post@talk.nabble.com> heb ik ook gedaan: ik heb gewoon ALLE variabelen, tevens diegene die ik uit de ge-extende classes haal. PS: ik heb gevonden, denk ik, waarom het niet werkte wanneer ik die class-variables defini?er in het begin: ik had namelijk een method en een class-variable met dezelfde naam (self.income). toen ik 1 van de 2 van naam wijzigde werkte het wel, zelfs met het defini?ren in het begin mvg, UnrealEd -- View this message in context: http://www.nabble.com/extending-classes-t1473655.html#a4138639 Sent from the Python - python-nl forum at Nabble.com. From eric at infrae.com Fri Apr 28 13:38:38 2006 From: eric at infrae.com (eric casteleijn) Date: Fri, 28 Apr 2006 13:38:38 +0200 Subject: [python-nl] extending classes In-Reply-To: <4138405.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> <4451F8C1.2050408@infrae.com> <4138405.post@talk.nabble.com> Message-ID: <4451FEBE.3040204@infrae.com> > to Eric: > dat is uit gewoonte: in zowel Java, PHP, e.d is het de gewoonte (en bij Java > verplicht) om de class-variabelen bovenaan de class te defini?ren. ik dacht > dat ik het hier in python ook maar zou doen. plus, het geeft een mooi > overzicht (zeker als je er een 30-tal hebt staan :) ). Ja ik dacht al zoiets, maar dat is niet wat je doet. Je kent de string factory method toe aan de variabele a, zodat je nu in plaats van b = str(4), ook b = a(4) kan doen. Daarna ken je weer een andere waarde toe aan a in je subclass, wat de eerste assignment overschrijft. Python is dynamisch getypeerd, en heeft geen type declaraties. Als je een waarde toekent aan een variabele is dat voldoende. eric From avisser at myrealbox.com Fri Apr 28 12:16:44 2006 From: avisser at myrealbox.com (avisser) Date: Fri, 28 Apr 2006 12:16:44 +0200 Subject: [python-nl] extending classes In-Reply-To: <3991448.post@talk.nabble.com> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> Message-ID: On Wed, 19 Apr 2006 18:42:56 +0200, UnrealEd wrote: > 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" > > > wanneer ik nu echter met het volgende commando: > test2() > de class test2 aanroep krijg ik de volgende error: > module.__init__() takes at most 2 arguments (3 given) > > waarbij ik niet snap hoe hij aan 3 komt. in de class test2 wordt enkel > self > "ingevoerd" en in test ook zo. > moet ik in de class test2, in de constructor dan ook de parentclass > invoeren, als volgt: > import test > class test2(test): > def __init__(self, test): > print "wanneer ik deze aanroep, met er nog een print komen\n\n" > > indien ja, waarom juist? > > mvg, > UnrealEd > -- > View this message in context: > http://www.nabble.com/extending-classes-t1473655.html#a3991448 > Sent from the Python - python-nl forum at Nabble.com. > > _______________________________________________ > Python-nl mailing list > Python-nl at python.org > http://mail.python.org/mailman/listinfo/python-nl > Als je "import test" gebruikt, moet je elk object binnen de module classificeren met de modulenaam. test2 moet je dan definieren als class test2(test.test) Om het op jouw manier te doen gebruik je beter from test import * class test(test): ... groeten Albert -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ From edunreal at gmail.com Sun Apr 30 20:55:03 2006 From: edunreal at gmail.com (UnrealEd) Date: Sun, 30 Apr 2006 11:55:03 -0700 (PDT) Subject: [python-nl] extending classes In-Reply-To: <4451FE89.9080005@gerlich.nl> References: <3985353.post@talk.nabble.com> <44461CB9.1060204@infrae.com> <3991448.post@talk.nabble.com> <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> <4451F8C1.2050408@infrae.com> <4138405.post@talk.nabble.com> <4451FE89.9080005@gerlich.nl> Message-ID: <4167046.post@talk.nabble.com> ok, bedankt. er is dus niet echt een manier om een variabele "behoorlijk" te definieren, behalve door hem een lege waarde mee te geven? dus eigenlijk hoef ik dit nergens te doen? toch een tegenvoorbeeldje: als ik een multidimensionele dictionary aanmaak, dan krijg ik een error als ik de variabele niet op van tevoren heb gedefinieerd, wat normaal is. als ik ervoor dan zet: a = dict, dan werkt het wel, hoewel ik volgens je uitleg een functie aanroep. of maakt dat geen verschil. en waarom maakt het uit of ik een methode heb die dezelfde naam heeft als een variabele in dezelfde class (inmijn geval self.income en self.income() ) ? of ligt dat aan hetzelfde? mvg, UnrealEd -- View this message in context: http://www.nabble.com/extending-classes-t1473655.html#a4167046 Sent from the Python - python-nl forum at Nabble.com. From chris at niekel.net Sun Apr 30 21:17:23 2006 From: chris at niekel.net (Chris Niekel) Date: Sun, 30 Apr 2006 21:17:23 +0200 Subject: [python-nl] extending classes In-Reply-To: <4167046.post@talk.nabble.com> References: <20060419172854.GN17400@kira.niekel.net> <4446D0B3.9040709@infrae.com> <20060420074511.GO17400@kira.niekel.net> <44473F54.30000@python.org> <4138155.post@talk.nabble.com> <4451F693.8060908@infrae.com> <4451F8C1.2050408@infrae.com> <4138405.post@talk.nabble.com> <4451FE89.9080005@gerlich.nl> <4167046.post@talk.nabble.com> Message-ID: <20060430191722.GH17400@kira.niekel.net> On Sun, Apr 30, 2006 at 11:55:03AM -0700, UnrealEd wrote: > ok, bedankt. > er is dus niet echt een manier om een variabele "behoorlijk" te definieren, > behalve door hem een lege waarde mee te geven? Door in de constructor vast de variabelen te definieren, vind ik het soms wel wat handiger worden. Ik zou ze zelf dan eerder op 'None' zetten. Als je een hoop info in arrays of dicts wil gaan opslaan, zou ik die vast leeg initialiseren (dus met [], {}, of list() en dict()). Mijn logica hierachter is dat als je voor de gebruiker een dictionary opslaat, dan initialiseer je 'm niet per se als zodanig. Als de gebruiker (van je class) bijv. string=value kan aangeven, dan ben ik voorbereid met een dictionary. Dus class Configuration, met config.set(key, val) heeft in de __init__ een self.data = dict(). Class Storage daarentegen met storage.saveDict(dict) heeft in de __init__ een self.dictdata = None. Maar goed, dat gaat meer op gevoel denk ik. > dus eigenlijk hoef ik dit nergens te doen? toch een tegenvoorbeeldje: als ik > een multidimensionele dictionary aanmaak, dan krijg ik een error als ik de > variabele niet op van tevoren heb gedefinieerd, wat normaal is. als ik > ervoor dan zet: a = dict, dan werkt het wel, hoewel ik volgens je uitleg een > functie aanroep. of maakt dat geen verschil. Even interactief: >>> a = dict >>> a >>> a = dict() >>> a {} Had je niet a = dict() gedaan? Dict is een functie die de argumenten als dictionary terug geeft. >>> b = dict(a=3, b=1) {'a': 3, 'b': 4} > en waarom maakt het uit of ik een methode heb die dezelfde naam heeft als > een variabele in dezelfde class (inmijn geval self.income en self.income() ) > ? of ligt dat aan hetzelfde? Weer interactief: >>> class X: ... def __init__(self): ... self.income = 3 ... def income(self): ... return 5 ... >>> x =X() >>> x.__dict__ {'income': 3} >>> x.__class__.__dict__ {'__module__': '__main__', '__doc__': None, '__init__': , 'income': } Wat je dus kunt zien dat object 'x' een attribuut income heeft, met daarin nu het getal 3. De class van x heeft ook attributen, een ervan heeft ook 'income', en dat is een functie. Dus welke wordt gebruikt? >>> x.income 3 Eerst wordt bij het object of er een attribuut 'income' is. Die is er, dus klaar. >>> x.income() Traceback (most recent call last): File "", line 1, in ? TypeError: 'int' object is not callable Dit moet je dus lezen als (x.income) (). Nog steeds wordt 3 opgehaald, en dan wordt geprobeerd om die aan te roepen (door de ()). Het 'int' object heeft hier geen ondersteuning voor, dus krijg je deze error. Je hebt dus geen eenvoudige mogelijkheid meer om de functie income() aan te roepen. Groet, Chris