Tôi có một lớp hẹn giờ, mà tôi đã thiết kế để bắn một lần và (tối ưu) tự xóa. Có cách nào để tôi thực hiện sự tự phân hủy đó không?
class timer: def __init__(self, duration, function, args): self.duration = duration self.function = function self.args = args def start(self): self.time = time.time() self.validity = True def check(self): if(int(self.time)+self.duration < time.time() ): self.function(self.args) self.validity = False def __del__(self): print("timer destroyed")hỏi ngày 25 tháng 3 năm 2020 lúc 2:43Mar 25, 2020 at 2:43
1
Bạn có thể làm theo cách tiếp cận tương tự.
Một >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 2 có thể được gọi để phá hủy một ví dụ.
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deletedĐối tượng không bị xóa trừ khi tất cả các tài liệu tham khảo của nó bị xóa
Ngoài ra, từ tài liệu tham khảo tài liệu chính thức của Python:
Del X doesn trực tiếp gọi x.del () - số lần giảm trước đây là số tham chiếu cho x từng cái và cái sau chỉ được gọi khi số tham chiếu của X đạt đến 0del() — the former decrements the reference count for x by one, and the latter is only called when x‘s reference count reaches zero
Những gì bạn cần trong giải pháp của bạn là sử dụng một cái gì đó như >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 3 trong đó đối tượng là thể hiện bạn muốn xóa.
Đã trả lời ngày 25 tháng 3 năm 2020 lúc 2:48Mar 25, 2020 at 2:48
AzyCrw4282AzyCrw4282AzyCrw4282
6.6045 Huy hiệu vàng16 Huy hiệu bạc 30 Huy hiệu Đồng5 gold badges16 silver badges30 bronze badges
4
Bạn đã thử sử dụng không? một cái gì đó như thế này:
timer = NoneĐã trả lời ngày 25 tháng 3 năm 2020 lúc 4:19Mar 25, 2020 at 4:19
Chadee Fouadchadee FouadChadee Fouad
2.1532 huy hiệu vàng20 Huy hiệu bạc22 Huy hiệu đồng2 gold badges20 silver badges22 bronze badges
Từ khóa ____14 trong Python chủ yếu được sử dụng để xóa các đối tượng trong Python. Vì mọi thứ trong Python đại diện cho một đối tượng theo cách này hay cách khác, từ khóa >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 cũng có thể được sử dụng để xóa danh sách, cắt danh sách, xóa từ điển, xóa các cặp giá trị khóa khỏi từ điển, xóa các biến, v.v.>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 4 keyword in python is primarily used to delete objects in Python. Since everything in python represents an object in one way or another, The >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 keyword can also be used to delete a list, slice a list, delete a dictionaries, remove key-value pairs from a dictionary, delete variables, etc.
Syntax: del object_nameDưới đây là các ví dụ khác nhau hiển thị các trường hợp sử dụng khác nhau của từ khóa ____14:
1. Từ khóa Del để xóa các đối tượng
Ví dụ: Trong chương trình dưới đây, chúng tôi sẽ xóa Sample_Class bằng cách sử dụng ____17Statement.
In the program below we will deleted Sample_class using>>> class Test:
... def __del__(self):
... print "deleted"
...
>>> test = Test()
>>> del test
deleted
7statement.
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 8 >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 9
timer = None 0timer = None 1timer = None 2 timer = None 3
timer = None 0____25 timer = None 6timer = None 7timer = None 8
timer = None 9 Syntax: del object_name0 Syntax: del object_name1 Syntax: del object_name2 Syntax: del object_name3
Syntax: del object_name0 Syntax: del object_name5
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 Syntax: del object_name7
Syntax: del object_name0 Syntax: del object_name5
Output:
class '__main__.Sample_class'NameError:name 'Sample_class' is not defined1. Từ khóa Del để xóa các biến
Ví dụ: Trong chương trình dưới đây, chúng tôi sẽ xóa một biến bằng cách sử dụng từ khóa ____14.
In
the program below we will delete a variable using>>> class Test:
... def __del__(self):
... print "deleted"
...
>>> test = Test()
>>> del test
deleted
4 keyword.
class '__main__.Sample_class'1timer = None 2 timer = None 3
class '__main__.Sample_class'4timer = None 2 Syntax: del object_name2
Syntax: del object_name0class '__main__.Sample_class'8
Syntax: del object_name0NameError:name 'Sample_class' is not defined0
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 NameError:name 'Sample_class' is not defined2
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 NameError:name 'Sample_class' is not defined4
Syntax: del object_name0class '__main__.Sample_class'8
Syntax: del object_name0NameError:name 'Sample_class' is not defined0
Output:
20 GeeksForGeeks 20NameError: name 'my_variable2' is not defined1. Từ khóa DEL để xóa danh sách và danh sách cắt
Ví dụ: Trong chương trình bên dưới, chúng tôi sẽ xóa một danh sách và cắt một danh sách khác bằng cách sử dụng từ khóa ____14.
In the program below we will delete a list and slice another list
using>>> class Test:
... def __del__(self):
... print "deleted"
...
>>> test = Test()
>>> del test
deleted
4 keyword.
Các
[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]1timer = None 220 GeeksForGeeks 202[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]420 GeeksForGeeks 204[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]620 GeeksForGeeks 204[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]8[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]0
Syntax: del object_name0NameError: name 'my_list2' is not defined1
Syntax: del object_name0NameError: name 'my_list2' is not defined3
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 NameError: name 'my_list2' is not defined520 GeeksForGeeks 203[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]0
Syntax: del object_name0NameError: name 'my_list2' is not defined1
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 NameError: name 'my_list2' is not defined520 GeeksForGeeks 207>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 03NameError: name 'my_variable2' is not defined1[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]0
Syntax: del object_name0NameError: name 'my_list2' is not defined1
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 09
Syntax: del object_name0NameError: name 'my_list2' is not defined3
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]NameError: name 'my_list2' is not defined1. Từ khóa DEL để xóa từ điển và xóa các cặp giá trị khóa
Ví dụ: Trong chương trình dưới đây, chúng tôi sẽ xóa một từ điển và xóa một vài cặp giá trị khóa bằng cách sử dụng từ khóa ____14.
In the program below we will delete a dictionary and remove few key-value pairs using>>> class Test:
... def __del__(self):
... print "deleted"
...
>>> test = Test()
>>> del test
deleted
4 keyword.
Is
Các
Syntax: del object_name0>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 44
Syntax: del object_name0>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 46
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 48>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 20[1, 2, 3, 4, 5, 6, 7, 8, 9] ['Geeks', 'For', 'Geek'] [1, 3, 4, 5, 6, 7, 8, 9] [1, 3, 4, 7, 8, 9]0
Syntax: del object_name0>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 44
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 5 >>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 54
Syntax: del object_name0>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 46
Output:
>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 0>>> class Test: ... def __del__(self): ... print "deleted" ... >>> test = Test() >>> del test deleted 1Vui lòng tham khảo delattr () và del () để biết thêm chi tiết.