あるクラスから別のクラスに変数にアクセスするにはどうすればよいでしょうか? 質問する

あるクラスから別のクラスに変数にアクセスするにはどうすればよいでしょうか? 質問する

複数のクラスを利用するプログラムを書いています。変数セットの値を決定するためのクラスが 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

ただし、クラス変数はそのクラスのすべてのインスタンス間で共有されることに注意してください。

おすすめ記事