python 多线程笔记(6)-- 闭包

简介: 在类里弄一个闭包出来   很多资料上说,类内部的变量有两种。 按定义所在的位置,分__init__上方的和__init__下方的 按内存所在的位置,分类的和实例的,或者说公共的和私有的   现在,我想在类里定义一个保存实例个数的变量 x,如下: >>> class Foo: .

在类里弄一个闭包出来

 

很多资料上说,类内部的变量有两种。

按定义所在的位置,分__init__上方的和__init__下方

按内存所在的位置,分的和实例的,或者说公共的和私有

 

现在,我想在类里定义一个保存实例个数的变量 x,如下:

>>> class Foo:
. . .   x = 0
. . .   def __init__(self):
. . .       self.x += 1
. . .       print(self.x)

>>> f1 = Foo()
1
>>> f2 = Foo()
1
>>> Foo.x
0

 

显然,结果跟想法不符。

这里,各个实例的x是私有的,而类的x一直是零!

 

 

 

换种思路,把 x 定义成列表,看看

>>> class Bar:
. . .   x = [0]
. . .   def __init__(self):
. . .       self.x[0] += 1
. . .       print(self.x[0])

>>> b1 = Bar()
1
>>> b2 = Bar()
2
>>> Bar.x[0]
2

,额,可以了!因为x是对象,他的内存空间地址就固定了(这个说法不太恰当,将就理解吧)

 

目录
相关文章
|
3天前
|
缓存 数据安全/隐私保护 Python
python装饰器底层原理
Python装饰器是一个强大的工具,可以在不修改原始函数代码的情况下,动态地增加功能。理解装饰器的底层原理,包括函数是对象、闭包和高阶函数,可以帮助我们更好地使用和编写装饰器。无论是用于日志记录、权限验证还是缓存,装饰器都可以显著提高代码的可维护性和复用性。
18 5
|
7月前
|
Python
python基础篇:什么是作用域?具体的作用是什么?
python基础篇:什么是作用域?具体的作用是什么?
66 3
|
自然语言处理 Python
|
7月前
|
测试技术 Python
Python中的装饰器应用及实现原理
在Python编程中,装饰器是一种强大的工具,能够有效地扩展函数的功能而不修改其源代码。本文将深入探讨Python中装饰器的应用场景、实现原理以及具体示例,帮助读者更好地理解和运用装饰器提升代码的可读性和灵活性。
|
7月前
|
JavaScript 前端开发 Java
python中怎么使用作用域
python中怎么使用作用域
40 0
|
7月前
|
Java Shell 程序员
Python 进阶指南(编程轻松进阶):十七、Python 风格 OOP:属性和魔术方法
Python 进阶指南(编程轻松进阶):十七、Python 风格 OOP:属性和魔术方法
46 0
|
数据采集 Python
Python入门教程:什么闭包函数
闭包:闭是封闭(函数内部函数),包是包含(该内部函数对外部作用域而非全局作用域的变量的引用)。闭包指的是:函数内部函数对外部作用域而非全局作用域的引用。 提示:之前我们都是通过参数将外部的值传给函数,闭包提供了另外一种思路,包起来喽,包起呦,包起来哇。
131 0
|
程序员 Python
深入浅出Python闭包
闭包概念:在一个内部函数中,对外部作用域的变量进行引用, (并且一般外部函数的返回值为内部函数),那么内部函数就被认为是闭包 `(colsure)`。
|
索引 Python
Python 函数式编程,没什么废话,直接看用法和代码
lambda 这个关键词在很多语言中都存在。简单地说,它可以实现函数创建的功能。
140 0
|
设计模式 SQL 存储
【进阶Python】第六讲:单例模式的妙用
单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。