class ToBeDeleted:
def __init__(self, value):
self.value = val
# Whatever...
def __del__(self):
print self.value
l = [ToBeDeleted(i) for i in range(3)]
del l
In này 2, 1, 0
.Gọi 'del' trên danh sách
Bây giờ, được thứ tự của các yếu tố xóa được định nghĩa ở đâu đó trong đặc điểm kỹ thuật hoặc là nó thực hiện cụ thể? (hoặc có thể tôi không hiểu cơ chế cơ bản)
Đầu ra, ví dụ:
0, 1, 2
? Tôi nhận ra rằng lệnh2, 1, 0
có thể được thực hiện để tránh việc tái phân bổ bộ nhớ cho các phần tử trong khi xóa chúng, nhưng vẫn còn câu hỏi.Và điều cuối cùng - sự khác nhau giữa câu hỏi
del l
vàdel l[:]
là gì?
Rất nhiều nghi ngờ rằng thứ tự của các cuộc gọi cho '__del __()' được quy định bất cứ nơi nào. Thậm chí không nghĩ đến việc cố gắng viết mã dựa trên một thứ tự cụ thể. –
Ngay cả khi lệnh được chỉ định, bạn có thể giữ tham chiếu đến danh sách các phần tử ở bất kỳ đâu, do đó thứ tự mà phương thức '__del__' của bạn được gọi sẽ khác với thứ tự mà tham chiếu được xóa khỏi danh sách. – millimoose