Toon posts:

[Python] Nested Classes and Scopes

Pagina: 1
Acties:

Onderwerpen


  • Xuj
  • Registratie: november 2009
  • Laatst online: 28-08 09:49
Beste mede-Tweakers,

Aangezien ik meerdere methodes van programmeren probeer te beheersen, ben ik een beetje gaan spelen met objectgeoriënteerd programmeren. Of tenminste, voor zover het me alukt.

Nu heb ik:
Python: vraag.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A(object):

    class B(object):
        
        def __init__(self, foo):
            self.foo = foo
    
    def __init__(self, bar):
        self.bar = bar

    def func1(self, param):
        return param + 1

    def func2(self, param):
        return func1(B(param))

** De code is opgesteld voor de vraag. Daadwerkelijke code is een stuk langer, maar volgt hetzelfde systeem.
Ik heb zo'n gevoel dat ik misschien verkeerd bezig ben... **

Het eerste wat ik krijg en waar ik natuurlijk niet vrolijk van word, is:

code:
1
NameError: global name 'func1' is not defined


Dit kon ik opgelost krijgen, door er self.func1() van te maken.

Daarna krijg ik weer een NameError, ditmaal dat global name B not defined is. Dit heb ik opgelost door nogmaals een self ervoor te zetten en weer puntnotatie te gebruiken.

Echter heb ik gevoel dat het niet zo zou moeten. Ik geloof dat ik ergens iets van self, parent had gelezen, maar ik heb het helaas niet meer terug kunnen vinden...

Hulp wordt gewaardaard. :)

  • H!GHGuY
  • Registratie: december 2002
  • Niet online

H!GHGuY

Try and take over the world...

Beide oplossingen zijn correct vziw.

ASSUME makes an ASS out of U and ME


  • Xuj
  • Registratie: november 2009
  • Laatst online: 28-08 09:49
Hmm.. Dan zal het wel aan mij gelegen hebben.

  • RayNbow
  • Registratie: maart 2003
  • Laatst online: 13:18

RayNbow

Kirika <3

Naast self.B kun je ook A.B gebruiken.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • wjv
  • Registratie: december 2003
  • Laatst online: 12:52
Of class B naast class A definieren, ipv genest.

Alles wat binnen class A gedefinieerd is kan je ook alleen gebruiken middels een instantie van class A (dus self.), of door de klasse A te gebruiken (dus A.)

  • commandoline
  • Registratie: oktober 2009
  • Laatst online: 24-10-2012
RayNbow schreef op donderdag 04 november 2010 @ 14:11:
Naast self.B kun je ook A.B gebruiken.
Ik zou eigenlijk geen legitieme reden hiervoor kunnen verzinnen:
  • Binnen de class zelf kun je het best 'self' gebruiken, zodat je later nog de naam van de class kan veranderen.
  • Buiten de A-class de B-class proberen te gebruiken is (uitgaande van jouw voorbeeld) sowieso geen goed idee, dan hoor je hem IMHO niet te nesten.
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee