私は本とインターネットを介してPythonを学んでおり、クラスの問題で立ち往生しています。
2つの質問:
- あるクラスのインスタンスを別の(別の)クラスに作成するにはどうすればよいですか?
- クラスとnested(?)クラスの間で変数を渡すにはどうすればよいですか?
別の(別の)クラス内にクラスのインスタンスを作成しようとすると、メソッド内で作成できます。コードは次のとおりです。
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()
また、あるクラスから別のクラスに「値」を渡すにはどうすればよいですか?
私の一般的なアプローチや構文が間違っているかどうか教えてください。