Python 3.x python3 weakref()类迭代器在函数之间丢失

Python 3.x python3 weakref()类迭代器在函数之间丢失,python-3.x,weak-references,python-class,Python 3.x,Weak References,Python Class,在实现了weakref()函数之后,我在python3.8中实现了一个iterable类,以便能够删除该类的元素,如本文接受的答案所述 问题是,如果我在函数中填充iterable类,我将无法再迭代其元素: #/usr/bin/env蟒蛇3.8 导入系统 进口武器 #从内存\u分析器导入配置文件 #IN=“/home/enrico/Dropbox/NY/asilo_variant/inputs/merged.idter_M.norm.PASS.filtered.head1k.VEPoutput.v

在实现了
weakref()
函数之后,我在python3.8中实现了一个iterable类,以便能够删除该类的元素,如本文接受的答案所述

问题是,如果我在函数中填充iterable类,我将无法再迭代其元素:

#/usr/bin/env蟒蛇3.8
导入系统
进口武器
#从内存\u分析器导入配置文件
#IN=“/home/enrico/Dropbox/NY/asilo_variant/inputs/merged.idter_M.norm.PASS.filtered.head1k.VEPoutput.vcf”
a=[“a”、“b”、“c”、“d”]
类VEPh_迭代器(类型):
定义(自我):
返回self.classister()
VEPh级:
'''
这将存储VEP标题和相对列编号和字符
'''
__元类=向量迭代器
按_id={}
定义初始化(self、id、列号):
self.id=id
#self.by_id[id]=self
self.by_id[id]=weakref.ref(self)
self.column\u number=column\u number
@类方法
def分级器(cls):
#返回iter(cls.by_id.values())
返回(如果i不是None,则i代表i in(i()代表i in cls.by_id.values())
def readVCF():
name_dict={}
对于枚举(a)中的i,s:
名称目录更新({i:s})
姓名/名称[i]=VEPh(s,i)
如果名称=“\uuuuu main\uuuuuuuu”:
readVCF()
对于VEPh.classister()中的v:
打印(“-”+v.id+”:“+str(v.column\u编号))
调用它有一个空输出:

python3.8/home/enrico/Dropbox/NY/asilo_variant/asilo_variant.stackoverflow.py
###没有标准
如果修改删除
weakref()
它会工作:

#/usr/bin/env蟒蛇3.8
导入系统
进口武器
#从内存\u分析器导入配置文件
#IN=“/home/enrico/Dropbox/NY/asilo_variant/inputs/merged.idter_M.norm.PASS.filtered.head1k.VEPoutput.vcf”
a=[“a”、“b”、“c”、“d”]
类VEPh_迭代器(类型):
定义(自我):
返回self.classister()
VEPh级:
'''
这将存储VEP标题和相对列编号和字符
'''
__元类=向量迭代器
按_id={}
定义初始化(self、id、列号):
self.id=id
self.by_id[id]=self
#self.by_id[id]=weakref.ref(self)
self.column\u number=column\u number
@类方法
def分级器(cls):
返回iter(cls.by_id.values())
#返回(如果i不是None,则i代表i in(i()代表i in cls.by_id.values())
def readVCF():
name_dict={}
对于枚举(a)中的i,s:
名称目录更新({i:s})
姓名/名称[i]=VEPh(s,i)
如果名称=“\uuuuu main\uuuuuuuu”:
readVCF()
对于VEPh.classister()中的v:
打印(“-”+v.id+”:“+str(v.column\u编号))
称之为有效:

python3.8/home/enrico/Dropbox/NY/asilo_variant/asilo_variant.stackoverflow.py
-a:0
-b:1
-c:2
-d:3
我想问题是
weakref()
在函数之间不知何故丢失了,但是如何使它可以被外部函数调用呢