python - 一旦函数返回,什么会保留对函数嵌套类的引用?
问题描述
考虑一下(Python 3):
class M(type):
def __new__(cls, name, bases, dct):
print('creating class {}'.format(name))
return super().__new__(cls, name, bases, dct)
def __del__(cls):
print('deleting class {}'.format(cls.__name__))
def func():
class A(metaclass=M):
pass
func()
func()
func()
print('end')
输出是:
creating class A
creating class A
creating class A
end
deleting class A
deleting class A
deleting class A
这表明,一旦创建了函数的嵌套类(调用 时func()
),即使函数返回,某些东西也会对其进行引用。
究竟是什么拥有这样的参考?返回后有什么方法可以访问创建的类func()
?
注意:sys.getrefcount(A)
就在函数返回之前返回 5。
解决方案
推荐阅读
- php - 我如何在php函数中返回一个数组
- java - System.out.println 添加特定变量时打印部分字符串
- java - Spring Boot:如何忽略方法映射中的类映射
- c# - 要求自定义 .MSI 文件属性的详细信息选项卡
- c# - 如何拆分字符串,其中一个字符是分隔符,另一个是内容
- spring-cloud-gateway - Spring Cloud Gateway 是否支持 SOAP?
- jquery - jQuery bvalidator 在验证消息时未显示验证值
- java - 无法识别的属性名称 MODULE(com.sun.tools.javac.util.SharedNameTable$NameImpl 类)
- cmd - “ARP -a”命令说明
- javascript - load() div 后其他按钮停止工作