Hallo,

 

Het is inderdaad zo dat MasterClass een object UserData aanmaakt, en daar bewerkingen mee uitvoert.

Wat ik wel niet goed versta is dit:

> Als je die naam namelijk hard-coded in MasterClass hebt zitten kun je

> nooit meer een ander data base object gebruiken in je MasterClass,

> want dan moet je eerst de source van MasterClass aanpassen.

Ik maak helemaal in het begin van MasterClass zulk een object aan, en wijs dat toe aan een member-variabele van masterClass. Op deze mannier kan ik toch eenvoudig van database object wisselen, of versta ik u verkeerd?

 

> Wat ik nu niet begrijp is waarom importeer je nu UserData?

> Je hoeft een module niet te importeren puur omdat je objecten gebruikt

> die in die file gedefinieerd zijn.

 

Je bedoelt dat ik de member-function van UserData zonder de class te initiëren kan aanroepen?

Vb:

   userdata = userData().getUserInfo()

 

> Het grote voordeel in mijn ervaring!!! van meerdere classes in 1 file

> is dat uitprinten eenvoudiger is. 1 file uitprinten is genoeg om te

> weten dat

 

> je alle dingen van een bepaald stukje bij elkaar hebt.

> Tevens is wijzigen en dingen consistent houden eenvoudiger (ie

> wijzigingen in 1 class veroorzaakt vaak wijzigingen in meerdere andere

> classes). Bij mij staan al die classes normaal in dezelfde file, wat

> erg handig edit, en

 

> ook erg handig is bij een SCM om consistente delta's te krijgen.

 

Qua printen heb je zeker gelijk. Maar ik vind het gewoon te onoverzichtelijk om alles, onderverdeeld in "hoofdstukken", in dezelfde file te zetten. Maar dit is misschien vanwege mijn ervaring in php: daar werd elke keer als je de class aanriep het hele bestand geladen, en voor de bandwijdte was dit vrij lastig, daarom splitste ik zoveel als ik kon.

 

> ik constateer alleen dat je een andere conventie gebruikt (van Java?)

In Java doe ik het ook zoals ik zei, gewoonweg om overzicht te houden.

 

Er valt inderdaad wel iets te zeggen voor jouw methode, omdat je alles terug kan vinden in dezelfde file

 

Mvg,

UnrealEd

 

PS: staat het oorspronkelijke bericht hier nu?

Anders weet ik niet wat ik fout deed

 

-----Oorspronkelijk bericht-----

Van: A.T.Hofkamp [mailto:[EMAIL PROTECTED]]

Verzonden: woensdag 8 maart 2006 11:40

Aan: UnrealEd; python-nl@python.org

Onderwerp: Re: [python-nl] classes importeren uit subfolders

 

Hallo,

 

Mijn post bouncede zonet op [EMAIL PROTECTED] :-(, maar de Cc naar jouw werkt blijkbaar wel.

 

Ik stuur deze ook naar de python-nl mailing-lijst hoewel ik verwacht dat deze ook gaat bouncen.

 

Als je een antwoord stuurt naar de groep zou het fijn zijn als je mijn tekst

 

quote, zodat de andere lezers ook nog snappen waar het over gaat.

 

Alvast bedankt

 

 

UnrealEd wrote:

> Hello,

>

> Mijn hierarchie zit niet verkeerd in elkaar:

> In Global zitten classes die voor heel het systeem nuttig zijn Ik ben

> namelijk een multiplayer spel aan het schrijven, waarbij in

> MasterClass de grote berekeningen worden gedaan. In UserData zitten

classes

> die informatie over de user uit de database haalt. Deze classes worden

> ook nog gebruikt voor andere delen in het spel. Daarom had ik die map

> Global genoemd, omdat ze overal gebruikt worden.

 

Misschien bestaat er een misverstand over import, of over het gebruik van classes?

 

MasterClass gebruikt dus een UserData object om spullen uit een data base te

 

trekken.

Het feit dat je een apart object gebruikt impliceert bij mij dat je niet wil

 

dat de MasterClass weet hoe de data base in elkaar zit (anders zou je namelijk die class bij MasterClass voegen).

Dat geldt ook voor de naam van de UserData class zelf (althans dat verwacht ik). Als je die naam namelijk hard-coded in MasterClass hebt zitten kun je nooit meer een ander data base object gebruiken in je MasterClass, want dan moet je eerst de source van MasterClass aanpassen.

 

Met andere woorden, ik verwacht dat een UserData object aan MasterClass gegeven wordt, die daar dan vervolgens mee aan de gang kan gaan.

 

Wat ik nu niet begrijp is waarom importeer je nu UserData?

Je hoeft een module niet te importeren puur omdat je objecten gebruikt die in die file gedefinieerd zijn.

 

 

> Juist omdat ik de classes in verschillende subfolders zet, blijft het

> overzichtelijk. Ik zet gewoon 1 class per file, om het overzicht te

> behouden. Ik weet dat k uiteindelijk over de 100 classes zal zitten, en

als

> je dan moet gaan zoeken in welke file wat zit, wordt dat echt gekkenwerk

:)

 

grep is your friend :-)

[ het grotere probleem is over het algemeen vinden waar een bepaalde class

gebruikt wordt, niet waar hij gedefinieerd wordt is mijn ervaring, daar heb

ik

nog geen oplossing voor ]

 

Die ervaring heb ik niet, normaal kies je een filename die een deel van het

probleem afdekt, en vervolgens duw je alle code die daar logisch gezien bij

hoort in die file.

(bijv 'database.py' bevat alle data base gerelateerde classes.)

 

Als de file dan te groot wordt, ga je delen afsplitsen of anders

reshuffelen,

bijv (user_database.py, en wereld_database.py).

Dat kun je ook doen als meerdere stukken code bepaalde delen nodig hebben.

 

Het grote voordeel in mijn ervaring!!! van meerdere classes in 1 file is dat

 

uitprinten eenvoudiger is. 1 file uitprinten is genoeg om te weten dat je

alle

dingen van een bepaald stukje bij elkaar hebt.

Tevens is wijzigen en dingen consistent houden eenvoudiger (ie wijzigingen

in

1 class veroorzaakt vaak wijzigingen in meerdere andere classes). Bij mij

staan al die classes normaal in dezelfde file, wat erg handig edit, en ook

erg

handig is bij een SCM om consistente delta's te krijgen.

 

PS Ik beweer niet dat jou manier verkeerd of minder goed is, ik constateer

alleen dat je een andere conventie gebruikt (van Java?) dan ik, en ben

benieuwd naar de ervaring daarvan.

 

Albert

 

 

_______________________________________________
Python-nl mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl

Antwoord per e-mail aan