python中的namespace
python中的名称空间是名称(标识符)到对象的映射。
具体来说,python为模块、函数、类、对象保存一个字典(__dict__),里面就是重名称到对象的映射。
可以参看下面python程序的输出:
print('globals:')
print(globals().keys())
print('')
x = 1
print('globals after definition of x:')
print(globals().keys())
print('')
if x == 1:y = 2z = 3print('globals inside if :%s' % (globals().keys()))print('locals inside if: %s' % (locals().keys()))del yprint('locals after del: %s' % (locals().keys()))
而在面向对象编程中,python与C++最大的差别之一就在于python中的namespace是可以动态变化的,类的成员,类实例的成员都可以动态添加,所做的不过是在相应的namespace字典中添加一项。这里特别指出的值,函数(成员函数或全局函数)也有自己的namespace字典,甚至可以动态添加
class Test1(object):x = 1def __init__(self):self.y = 2self.z = 3def func(self):print('test')func.fx = 2
print(Test1.__dict__)
t1 = Test1()
print(t1.__dict__)
print(t1.func.__dict__)
由此,我们可以理解一下,python中所谓的构造函数__init__所做的事情了,因为成员方法第一个传入的是self引用,相当于
t1 = Test1()的时候调用Test1.__init__(t1),然后在构造函数里面添加了类实例t1的namespace字典项
转载于:https://www.cnblogs.com/hustxujinkang/p/4607793.html
python中的namespace相关推荐
- Python中利用parse_args与namespace来简化函数传参
python中parse_args以及namespace 声明:本笔记记录的是使用parse_args在函数内部进行传参,并非在命令行进行输入.所有操作均需先进行import argparse. 通过 ...
- python中csv文件操作_python中操作csv文件
python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...
- Python中的__name__和__main__含义详解
背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main(): ...... if __name__ == "__ma ...
- python中append函数合并列表且列表内数字从高到低_35个高级Python知识点总结
No.1 一切皆对象 众所周知,Java中强调"一切皆对象",但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function) ...
- 在Python中对子进程进行非阻塞读取
我正在使用子流程模块来启动子流程并连接到其输出流(stdout). 我希望能够在其stdout上执行非阻塞读取. 有没有一种方法可以使.readline成为非阻塞状态,或者在调用.readline之前 ...
- 在Python中创建单例
这个问题不是为了讨论是否需要单例设计模式 ,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式. 在这种情况下,我定义"最pytho ...
- Python中可以使用静态类变量吗?
Python中是否可以有静态类变量或方法? 为此需要什么语法? #1楼 我发现最好的方法是使用另一个类. 您可以创建一个对象,然后在其他对象上使用它. class staticFlag:def __i ...
- Python中的元类是什么?
元类是什么,我们将它们用于什么? #1楼 请注意,此答案适用于2008年编写的Python 2.x,元类在3.x中略有不同. 元类是使"类"工作的秘诀. 新样式对象的默认元类称为& ...
- python中break可以用在for和if中吗_Python的for和break循环结构中使用else语句的技巧...
在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句. for i in range(5): if i == 1: pri ...
最新文章
- Linux启动检测内存条错误,linux检测程序内存泄漏和内存错误
- [分享]关于windows下的小技巧
- 软件开发生命周期中的设计阶段_BIM咨询在设计阶段包含哪些内容?体现了哪些价值?...
- JPA HttpMessageNotWritableException: Could not write content: Infinite recursion (StackOverflowError
- Android 3.0细节曝光:Google程序更耀眼
- Java中的代理模式
- POJ-1195-Mobile phones
- nullnullUVa 10066 - The Twin Towers(LCS水题)
- DM7 达梦数据库 物理备份 相关概念说明
- python omron Fins -PLC和上位机socket通讯( tcy)
- 安装不成功问题解决办法
- echart地图上自定义图标
- 微信分享图片URL不显示问题
- Voxelization 三维模型体素化
- 品牌如何开展饥饿营销?
- 全国计算机一级ms考试内容,2020年全国计算机等级考试一级MSOFFICE考试内容
- oracle磁带的使用期限,存储的损耗 关于磁带寿命的一些探讨
- 社团结构 matlab,社团结构
- 普通卷积、Depthwise(DW)卷积、Pointwise(PW)卷积、Atrous卷积
- html5+Css3 做一个婚纱网页