我正在研究一个Python类,它的结构类似于下面答案中的示例:https://stackoverflow.com/a/1383744/576333。类本身使用字典跟踪所有创建的对象
class Repository(object):
# All repositories are stored in this class-level dictionary such that
# all instances of this class maintain the same set.
all_repos = {}
def __init__(self, name, data):
"""
Create a repository object. If it has the required tags, include it in
the collection of all repositories.
"""
# Don't add it if it already exists
if not name in Repository.all_repos:
# Store the attributes
self.__dict__ = data
self.__dict__['name'] = name
Repository.all_repos.update({ name: self })
我的问题是,在python中创建delete/remove方法并希望从all_repos
字典中清除Repository
的实例时会发生什么?下面是我计划用的方法:
def remove(self):
repo = Repository.all_repos.pop(self.name) # pop it out
print "You just removed %s" % repo.name
使用以下用法:
a= Repository('repo_name', {'attr1':'attr1_value',...}
a.remove()
此时,a
仍然存在,但不在Repository.all_repos
中。Python什么时候才能删除a
我发现本文对可视化垃圾收集非常有帮助。它使用Ruby的GC进行比较,但值得一读:
http://patshaughnessy.net/2013/10/24/visualizing-garbage-collection-in-ruby-and-python
相关问题 更多 >
编程相关推荐