Computer >> Máy Tính >  >> Lập trình >> Python

Tránh dữ liệu lớp được chia sẻ giữa các phiên bản trong Python

Khi chúng ta khởi tạo một lớp bằng Python, tất cả các biến và hàm của nó cũng được kế thừa sang lớp khởi tạo mới. Nhưng có thể có đôi khi chúng ta không muốn một số biến của lớp cha được lớp con kế thừa. Trong bài viết này, chúng ta sẽ khám phá hai cách để thực hiện điều đó.

Ví dụ về Thuyết minh

Trong ví dụ dưới đây, chúng tôi chỉ ra cách các biến được làm nóng phiên bản từ một lớp nhất định và cách các biến được chia sẻ trên tất cả các lớp được khởi tạo.

class MyClass:
   listA= []

# Instantiate Both the classes
x = MyClass()
y = MyClass()

# Manipulate both the classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X: ",x.listA)
print("Instance Y: ",y.listA)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Instance X: [10, 20, 30, 40]
Instance Y: [10, 20, 30, 40]

Biến Lớp riêng với __inti__

Chúng ta có thể sử dụng phương thức I need a để làm cho các biến bên trong một lớp là riêng tư. Các biến này sẽ không được chia sẻ giữa các lớp khi lớp cha được khởi tạo.

Ví dụ

class MyClass:
   def __init__(self):
      self.listA = []

# Instantiate Both the classes
x = MyClass()
y = MyClass()

# Manipulate both the classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X: ",x.listA)
print("Instance Y: ",y.listA)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Instance X: [10, 30]
Instance Y: [20, 40]

Bằng cách khai báo các biến bên ngoài

Trong cách tiếp cận này, chúng ta sẽ khai báo lại các biến bên ngoài lớp. Khi các biến được khởi tạo lại, các biến này không được chia sẻ trên các lớp được khởi tạo.

Ví dụ

class MyClass:
   listA = []

# Instantiate Both the classes
x = MyClass()
y = MyClass()

x.listA = []
y.listA = []
# Manipulate both the classes
x.listA.append(10)
y.listA.append(20)
x.listA.append(30)
y.listA.append(40)

# Print Results
print("Instance X: ",x.listA)
print("Instance Y: ",y.listA)
Output

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Instance X: [10, 30]
Instance Y: [20, 40]