Trong Python, các câu lệnh Chuyển nhượng không sao chép các đối tượng, chúng tạo ra các liên kết giữa mục tiêu và đối tượng. Khi chúng ta sử dụng toán tử =, Nó chỉ tạo một biến mới chia sẻ tham chiếu của đối tượng ban đầu. Để tạo “bản sao thực” hoặc “bản sao” của các đối tượng này, chúng ta có thể sử dụng module copy trong Python Show
Cú pháp của Deep copy
Cú pháp của Shallow copy
Thí dụĐể tạo các bản sao này, chúng tôi sử dụng mô-đun sao chép. copy() trả về một bản sao nông của danh sách và deepcopy() trả về một bản sao sâu của danh sách. Như bạn có thể thấy rằng cả hai đều có cùng giá trị nhưng có ID khác nhau Python3The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 40 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 41 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 42
The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 43 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 44 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 45 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 46_______00 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 41 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 42 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 43 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 44 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 41 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 46 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 47 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 48 The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 49 của các đối tượng, chúng chỉ liên kết tên với một đối tượng. Đối với các đối tượng bất biến, điều đó thường không tạo ra sự khác biệt Nhưng để làm việc với các đối tượng có thể thay đổi hoặc bộ sưu tập các đối tượng có thể thay đổi, bạn có thể đang tìm cách tạo “bản sao thực” hoặc “bản sao” của các đối tượng này Về cơ bản, đôi khi bạn sẽ muốn các bản sao mà bạn có thể sửa đổi mà không tự động sửa đổi bản gốc cùng một lúc. Trong bài viết này, tôi sẽ cung cấp cho bạn tóm tắt về cách sao chép hoặc “nhân bản” các đối tượng trong Python 3 và một số cảnh báo liên quan
Hãy bắt đầu bằng cách xem cách sao chép các bộ sưu tập có sẵn của Python. Có thể sao chép các bộ sưu tập có thể thay đổi được tích hợp sẵn của Python như danh sách, ký tự và bộ bằng cách gọi các hàm xuất xưởng của chúng trên một bộ sưu tập hiện có The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 40 Tuy nhiên, phương pháp này sẽ không hoạt động đối với các đối tượng tùy chỉnh và trên hết, nó chỉ tạo các bản sao nông. Đối với các đối tượng phức hợp như danh sách, ký tự và tập hợp, có một sự khác biệt quan trọng giữa sao chép nông và sâu
Tôi biết, đó là một chút của một ngụm. Vì vậy, hãy xem xét một số ví dụ để hiểu rõ sự khác biệt giữa các bản sao sâu và nông Tải xuống miễn phí. Nhận một chương mẫu từ Thủ thuật Python. Cuốn sách chỉ cho bạn các phương pháp hay nhất về Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã Pythonic + đẹp hơn Tạo bản sao nôngTrong ví dụ bên dưới, chúng ta sẽ tạo một danh sách lồng nhau mới và sau đó sao chép sơ qua nó bằng hàm xuất xưởng The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 417 >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 41 Điều này có nghĩa là The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 418 bây giờ sẽ là một đối tượng mới và độc lập với cùng nội dung như The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419. Bạn có thể xác minh điều này bằng cách kiểm tra cả hai đối tượng >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 45 Để khẳng định The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 418 có thực sự độc lập với bản gốc hay không, hãy làm một thí nghiệm nhỏ. Bạn có thể thử thêm một danh sách con mới vào bản gốc ( The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419) và sau đó kiểm tra để đảm bảo rằng sửa đổi này không ảnh hưởng đến bản sao ( The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 418) >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 49 Như bạn có thể thấy, điều này có tác dụng như mong đợi. Việc sửa đổi danh sách đã sao chép ở mức độ “hời hợt” hoàn toàn không có vấn đề gì Tuy nhiên, vì chúng ta chỉ tạo một bản sao nông của danh sách ban đầu, nên The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 418 vẫn chứa các tham chiếu đến các đối tượng con ban đầu được lưu trữ trong The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419 Những đứa trẻ này không được sao chép. Chúng chỉ được tham chiếu lại trong danh sách đã sao chép Do đó, khi bạn sửa đổi một trong các đối tượng con trong The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419, sửa đổi này cũng sẽ được phản ánh trong The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 418—đó là vì cả hai danh sách đều chia sẻ cùng một đối tượng con. Phó bản chỉ là nông, phó bản sâu một cấp >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 44 Trong ví dụ trên, chúng tôi (dường như) chỉ thực hiện thay đổi thành The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419. Nhưng hóa ra cả hai danh sách phụ ở chỉ mục 1 trong The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419 và The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 418 đều đã được sửa đổi. Một lần nữa, điều này xảy ra bởi vì chúng tôi chỉ tạo một bản sao nông của danh sách gốc Nếu chúng ta tạo một bản sao sâu của The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419 trong bước đầu tiên, thì cả hai đối tượng sẽ hoàn toàn độc lập. Đây là sự khác biệt thực tế giữa các bản sao nông và sâu của các đối tượng Bây giờ bạn đã biết cách tạo các bản sao nông của một số lớp bộ sưu tập tích hợp sẵn và bạn biết sự khác biệt giữa sao chép nông và sâu. Những câu hỏi chúng tôi vẫn muốn câu trả lời là
Câu trả lời cho những câu hỏi này nằm trong mô-đun The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 491 trong thư viện chuẩn Python. Mô-đun này cung cấp một giao diện đơn giản để tạo các bản sao nông và sâu của các đối tượng Python tùy ýLoại bỏ các quảng cáo Tạo bản sao sâuHãy lặp lại ví dụ sao chép danh sách trước đó, nhưng với một điểm khác biệt quan trọng. Thay vào đó, lần này chúng ta sẽ tạo một bản sao sâu bằng cách sử dụng hàm The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 492 được xác định trong mô-đun The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 491 >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 42 Khi bạn kiểm tra The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419 và bản sao của nó The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 495 mà chúng tôi đã tạo bằng The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 496, bạn sẽ thấy rằng cả hai trông giống hệt nhau một lần nữa—giống như trong ví dụ trước >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 46 Tuy nhiên, nếu bạn sửa đổi một trong các đối tượng con trong đối tượng ban đầu ( The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419), bạn sẽ thấy rằng sửa đổi này sẽ không ảnh hưởng đến bản sao sâu ( The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 495) Cả hai đối tượng, bản gốc và bản sao, lần này hoàn toàn độc lập. The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 419 được sao chép đệ quy, bao gồm tất cả các đối tượng con của nó >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 40 Bạn có thể muốn dành chút thời gian để ngồi xuống với trình thông dịch Python và xem qua các ví dụ này ngay bây giờ. Việc sao chép các đối tượng sẽ dễ dàng hơn khi bạn trực tiếp trải nghiệm và chơi với các ví dụ Nhân tiện, bạn cũng có thể tạo các bản sao nông bằng một hàm trong mô-đun The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 491. Hàm The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 441 tạo bản sao nông của đối tượng Điều này hữu ích nếu bạn cần thông báo rõ ràng rằng bạn đang tạo một bản sao nông ở đâu đó trong mã của mình. Sử dụng The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 441 cho phép bạn chỉ ra thực tế này. Tuy nhiên, đối với các bộ sưu tập tích hợp, nó được coi là Pythonic hơn khi chỉ sử dụng các hàm list, dict và set factory để tạo các bản sao nông Sao chép các đối tượng Python tùy ýCâu hỏi chúng ta vẫn cần trả lời là làm cách nào để tạo các bản sao (nông và sâu) của các đối tượng tùy ý, bao gồm các lớp tùy chỉnh. Bây giờ chúng ta hãy xem xét điều đó Một lần nữa mô-đun The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 491 đến để giải cứu chúng tôi. Các hàm The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 441 và The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 496 của nó có thể được sử dụng để sao chép bất kỳ đối tượng nào Một lần nữa, cách tốt nhất để hiểu cách sử dụng chúng là làm một thí nghiệm đơn giản. Tôi sẽ dựa trên ví dụ sao chép danh sách trước đó. Hãy bắt đầu bằng cách định nghĩa một lớp điểm 2D đơn giản The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 47 Tôi hy vọng bạn đồng ý rằng điều này là khá đơn giản. Tôi đã thêm một triển khai The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 446 để chúng ta có thể dễ dàng kiểm tra các đối tượng được tạo từ lớp này trong trình thông dịch Python
Tiếp theo, chúng ta sẽ tạo một phiên bản The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 448 và sau đó sao chép (một cách nông cạn) nó, sử dụng mô-đun The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 491 >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 410 Nếu chúng tôi kiểm tra nội dung của đối tượng The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 448 ban đầu và bản sao (nông) của nó, chúng tôi sẽ thấy những gì chúng tôi mong đợi >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 411 Đây là một cái gì đó khác để ghi nhớ. Bởi vì đối tượng điểm của chúng ta sử dụng các kiểu bất biến (int) cho tọa độ của nó, nên không có sự khác biệt giữa bản sao nông và sâu trong trường hợp này. Nhưng tôi sẽ mở rộng ví dụ sau Hãy chuyển sang một ví dụ phức tạp hơn. Tôi sẽ định nghĩa một lớp khác để biểu diễn các hình chữ nhật 2D. Tôi sẽ làm điều đó theo cách cho phép chúng ta tạo ra một hệ thống phân cấp đối tượng phức tạp hơn—các hình chữ nhật của tôi sẽ sử dụng các đối tượng The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 448 để thể hiện tọa độ của chúng The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 412 Một lần nữa, đầu tiên chúng ta sẽ cố gắng tạo một bản sao nông của một thể hiện hình chữ nhật The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 413 Nếu bạn kiểm tra hình chữ nhật ban đầu và bản sao của nó, bạn sẽ thấy tính năng ghi đè The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 446 hoạt động tốt như thế nào và quy trình sao chép nông hoạt động như mong đợi >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 414 Hãy nhớ ví dụ về danh sách trước đã minh họa sự khác biệt giữa các bản sao sâu và nông như thế nào? . Tôi sẽ sửa đổi một đối tượng sâu hơn trong hệ thống phân cấp đối tượng, sau đó bạn sẽ thấy thay đổi này cũng được phản ánh trong bản sao (nông) >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 415 Tôi hy vọng điều này hành xử như bạn mong đợi nó. Tiếp theo, tôi sẽ tạo một bản sao sâu của hình chữ nhật ban đầu. Sau đó, tôi sẽ áp dụng một sửa đổi khác và bạn sẽ thấy đối tượng nào bị ảnh hưởng >>> The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 416 thì đấy. Lần này bản sao sâu ( The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 423) hoàn toàn độc lập với bản gốc ( The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 424) và bản sao nông ( The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 425) Chúng tôi đã đề cập rất nhiều điều ở đây và vẫn còn một số điểm tốt hơn để sao chép các đối tượng Nó trả tiền để đi sâu (ha. ) về chủ đề này, vì vậy bạn có thể muốn nghiên cứu tài liệu về mô-đun The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 491. Ví dụ: các đối tượng có thể kiểm soát cách chúng được sao chép bằng cách xác định các phương thức đặc biệt The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 427 và The original elements before deep copying 1 2 [3, 5] 4 The new list of elements after deep copying 1 2 [7, 5] 4 The original elements after deep copying 1 2 [3, 5] 428 trên chúngLoại bỏ các quảng cáo 3 điều cần nhớ
Nếu bạn muốn tìm hiểu sâu hơn về các kỹ thuật lập trình Python cấp trung cấp khác, hãy xem phần thưởng miễn phí này Tải xuống miễn phí. Nhận một chương mẫu từ Thủ thuật Python. Cuốn sách chỉ cho bạn các phương pháp hay nhất về Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã Pythonic + đẹp hơn Đánh dấu là đã hoàn thành 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Dan Bader Dan Bader là chủ sở hữu và tổng biên tập của Real Python và là nhà phát triển chính của realpython. nền tảng học tập com. Dan đã viết mã hơn 20 năm và có bằng thạc sĩ về khoa học máy tính » Thông tin thêm về ĐanBậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bậc thầy Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng các chuyên gia Pythonistas Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Bạn có thể sao chép một thể hiện của một lớp trong Python không?Có, bạn có thể sử dụng bản sao. bản sao sâu . vì vậy chỉ cần c2 = sao chép.
Một thể hiện của hoặc một bản sao của một lớp là gì?Một thể hiện của lớp là một đối tượng . Nó còn được gọi là một đối tượng lớp hoặc thể hiện của lớp. Như vậy, khởi tạo có thể được gọi là xây dựng. Bất cứ khi nào các giá trị thay đổi từ đối tượng này sang đối tượng khác, chúng được gọi là biến thể hiện.
Bản sao () có phải là bản sao sâu không?copy() tạo bản sao nông của đối tượng.
Bản sao () là bản sao nông hay sâu?Sự khác biệt giữa Bản sao nông và sâu của một lớp |