python: erstellen Sie eine Instanz der Klasse in einer anderen Klasse (generisches Beispiel)

Lerne ich python via Buch und internet-und ich bin stecken, auf eine Klasse Ausgabe.

2 Fragen:

  1. Wie erstelle ich eine Instanz von einer Klasse in eine andere (separate) Klasse?
  2. Wie gebe ich Variablen zwischen der Klasse und den verschachtelten(?) Klasse?

Wenn ich versuche zum erstellen einer Instanz einer Klasse in eine andere (separate) Klasse, ich bin in der Lage zu tun, innerhalb einer Methode. Hier ist der code:

import os

class FOO():
    def __init__(self):
        self.values = [2, 4, 6, 8]

    def do_something(self, x, y):
        os.system("clear")
        z = self.values[x] * self.values[y]
        print "%r * %r = %r" % (self.values[x], self.values[y], z)


class BAR():
    def __init__(self):
        pass

    def something_else(self, a, b):
        foo1 = FOO()
        foo1.do_something(a, b)

bar = BAR()
bar.something_else(1, 2)

Wird dies jedoch, lassen Sie mich den Zugriff auf die Klasse " FOO " und die Informationen in anderen BAR-Methoden? Wenn ja, wie?

Ich habe Folgendes versucht und bekam eine Fehlermeldung:

import os

class FOO():
    def __init__(self):
        self.values = [2, 4, 6, 8]

    def do_something(self, x, y):
        os.system("clear")
        z = self.values[x] * self.values[y]
        print "%r * %r = %r" % (self.values[x], self.values[y], z)


class BAR():
    def __init__(self):
        foo1 = FOO()

    def something_else(self, a, b):
        foo1.do_something(a, b)

bar = BAR()
bar.something_else(1, 2)

Hier ist der Fehler:

Traceback (most recent call last):
File "cwic.py", line 22, in <module>
bar.something_else(1, 2)
File "cwic.py", line 19, in something_else
foo1.do_something(a, b)
NameError: global name 'foo1' is not defined

Bekomme ich die gleiche Fehlermeldung, wenn ich verwendet:

def __init__(self):
    self.foo1 = FOO()

Auch, wie soll ich gehen die 'Werte' von einer Klasse in die andere?

Bitte lassen Sie mich wissen, wenn meine Allgemeine Annäherung und/oder syntax falsch sind. Alle Vorschläge willkommen (einschließlich gut Lesen), wie ich gerade Lerne. Danke.

InformationsquelleAutor dwstein | 2012-08-17
Schreibe einen Kommentar