避免在 Python 中的实例之间共享类数据
pythonserver side programmingprogramming
当我们在 Python 中实例化一个类时,它的所有变量和函数也会被继承到新实例化的类中。但有时我们不希望子类继承父类的某些变量。在本文中,我们将探讨两种方法来实现这一点。
实例化示例
在下面的例子中,我们展示了变量是如何从给定的类中实例化的,以及如何在所有实例化的类之间共享变量。
class MyClass: listA= [] # 实例化两个类 x = MyClass() y = MyClass() # 操作两个类 x.listA.append(10) y.listA.append(20) x.listA.append(30) y.listA.append(40) # 打印结果 print("Instance X: ",x.listA) print("Instance Y: ",y.listA)
输出
运行上述代码得到以下结果 −
Instance X: [10, 20, 30, 40] Instance Y: [10, 20, 30, 40]
使用 __inti__ 的私有类变量
我们可以使用 I need a 方法将类中的变量设为私有。实例化父类时,这些变量不会在类之间共享。
示例
class MyClass: def __init__(self): self.listA = [] # 实例化两个类 x = MyClass() y = MyClass() # 操作两个类 x.listA.append(10) y.listA.append(20) x.listA.append(30) y.listA.append(40) # 打印结果 print("Instance X: ",x.listA) print("Instance Y: ",y.listA)
输出
运行上述代码得到以下结果 −
Instance X: [10, 30] Instance Y: [20, 40]
通过在类外声明变量
在这种方法中,我们将在类外重新声明变量。因为变量再次被初始化,所以不会在实例化的类之间共享。
示例
class MyClass: listA = [] # 实例化两个类 x = MyClass() y = MyClass() x.listA = [] y.listA = [] # 操作两个类 x.listA.append(10) y.listA.append(20) x.listA.append(30) y.listA.append(40) # 打印结果 print("Instance X: ",x.listA) print("Instance Y: ",y.listA) Output
输出
运行上述代码得到以下结果 −
Instance X: [10, 30] Instance Y: [20, 40]