我正在编写一个利用多个类的程序。我有一个专门用于确定一组变量的值的类。然后,我希望能够与其他类一起访问那些变量的值。我的代码如下所示:
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的值?
var1并且var2是实例变量。这意味着,你必须发送的实例ClassA来ClassB为了ClassB的访问它,即:
var1
var2
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
但是请注意,类变量在其类的所有实例之间共享。