複数のクラスを利用するプログラムを書いています。変数セットの値を決定するためのクラスが 1 つあります。他のクラスでそれらの変数の値にアクセスできるようにしたいと考えています。コードは次のようになります。
class ClassA(object):
def __init__(self):
self.var1 = 1
self.var2 = 2
def methodA(self):
self.var1 = self.var1 + self.var2
return self.var1
class ClassB(ClassA):
def __init__(self):
self.var1 = ?
self.var2 = ?
object1 = ClassA()
sum = object1.methodA()
print sum
私は、classA を使用して 2 つの変数 (var1 と var2) を初期化します。次に、methodA を使用してそれらを加算し、結果を var1 として保存します (これにより、var1 = 3、var2 = 2 になると思います)。私が知りたいのは、ClassB が ClassA から var1 と var2 の値を取得できるようにするにはどうすればよいかということです。
ベストアンサー1
var1
そしてvar2
インスタンス変数つまり、ClassB がアクセスするには、のインスタンスClassA
を に送信する必要があります。ClassB
class ClassA(object):
def __init__(self):
self.var1 = 1
self.var2 = 2
def methodA(self):
self.var1 = self.var1 + self.var2
return self.var1
class ClassB(ClassA):
def __init__(self, class_a):
self.var1 = class_a.var1
self.var2 = class_a.var2
object1 = ClassA()
sum = object1.methodA()
object2 = ClassB(object1)
print sum
一方、もしあなたがクラス変数、object1 をパラメーターとして ClassB に送信せずに var1 と var2 にアクセスできます。
class ClassA(object):
var1 = 0
var2 = 0
def __init__(self):
ClassA.var1 = 1
ClassA.var2 = 2
def methodA(self):
ClassA.var1 = ClassA.var1 + ClassA.var2
return ClassA.var1
class ClassB(ClassA):
def __init__(self):
print ClassA.var1
print ClassA.var2
object1 = ClassA()
sum = object1.methodA()
object2 = ClassB()
print sum
ただし、クラス変数はそのクラスのすべてのインスタンス間で共有されることに注意してください。