python :создать экземпляр класса в другом классе (с общим примером)

Я изучаю Python по книге и в Интернете, и я застрял в проблеме с классом.

2 вопроса:

  1. Как создать экземпляр одного класса в другом (отдельном )классе?
  2. Как передать переменные между классом и вложенным (? )класс?

Когда я пытаюсь создать экземпляр класса в другом (отдельном )классе, я могу сделать это внутри метода. Вот код:

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)

Однако позволит ли это мне получить доступ к классу FOO и его информации в других методах BAR? Если да, то как?

Я попробовал следующее и получил ошибку:

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)

Вот ошибка:

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

Я получаю ту же ошибку, когда использовал:

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

Кроме того, как мне передать «значения» из одного класса в другой?

Пожалуйста, дайте мне знать, если мой общий подход и/или синтаксис неверны. Любые и все предложения приветствуются (, включая хорошее чтение ), поскольку я только учусь. Спасибо.

12
задан fitzl 7 December 2018 в 18:43
поделиться