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相关推荐

  1. Python中利用parse_args与namespace来简化函数传参

    python中parse_args以及namespace 声明:本笔记记录的是使用parse_args在函数内部进行传参,并非在命令行进行输入.所有操作均需先进行import argparse. 通过 ...

  2. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  3. Python中的__name__和__main__含义详解

    背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main():     ...... if __name__ == "__ma ...

  4. python中append函数合并列表且列表内数字从高到低_35个高级Python知识点总结

    No.1 一切皆对象 众所周知,Java中强调"一切皆对象",但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function) ...

  5. 在Python中对子进程进行非阻塞读取

    我正在使用子流程模块来启动子流程并连接到其输出流(stdout). 我希望能够在其stdout上执行非阻塞读取. 有没有一种方法可以使.readline成为非阻塞状态,或者在调用.readline之前 ...

  6. 在Python中创建单例

    这个问题不是为了讨论是否需要单例设计模式 ,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式. 在这种情况下,我定义"最pytho ...

  7. Python中可以使用静态类变量吗?

    Python中是否可以有静态类变量或方法? 为此需要什么语法? #1楼 我发现最好的方法是使用另一个类. 您可以创建一个对象,然后在其他对象上使用它. class staticFlag:def __i ...

  8. Python中的元类是什么?

    元类是什么,我们将它们用于什么? #1楼 请注意,此答案适用于2008年编写的Python 2.x,元类在3.x中略有不同. 元类是使"类"工作的秘诀. 新样式对象的默认元类称为& ...

  9. python中break可以用在for和if中吗_Python的for和break循环结构中使用else语句的技巧...

    在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句. for i in range(5): if i == 1: pri ...

最新文章

  1. Linux启动检测内存条错误,linux检测程序内存泄漏和内存错误
  2. [分享]关于windows下的小技巧
  3. 软件开发生命周期中的设计阶段_BIM咨询在设计阶段包含哪些内容?体现了哪些价值?...
  4. JPA HttpMessageNotWritableException: Could not write content: Infinite recursion (StackOverflowError
  5. Android 3.0细节曝光:Google程序更耀眼
  6. Java中的代理模式
  7. POJ-1195-Mobile phones
  8. nullnullUVa 10066 - The Twin Towers(LCS水题)
  9. DM7 达梦数据库 物理备份 相关概念说明
  10. python omron Fins -PLC和上位机socket通讯( tcy)
  11. 安装不成功问题解决办法
  12. echart地图上自定义图标
  13. 微信分享图片URL不显示问题
  14. Voxelization 三维模型体素化
  15. 品牌如何开展饥饿营销?
  16. 全国计算机一级ms考试内容,2020年全国计算机等级考试一级MSOFFICE考试内容
  17. oracle磁带的使用期限,存储的损耗 关于磁带寿命的一些探讨
  18. 社团结构 matlab,社团结构
  19. 普通卷积、Depthwise(DW)卷积、Pointwise(PW)卷积、Atrous卷积
  20. html5+Css3 做一个婚纱网页

热门文章

  1. 使用jquery-qrcode生成二维码
  2. android权限检查
  3. 反编译Silverlight项目
  4. 零基础带你学习MySQL—not null 非空(二十四)
  5. JavaScript学习(五十二)—继承、call方法和apply方法
  6. 老婆给我推荐了一个副业,现在收入高于我工资,我要不要辞职?
  7. 牛市买基金好还是股票好?买基金会翻倍吗?
  8. 在职场中,如何能够让下属认真完成工作,又不顶撞你?
  9. 在国企工作30年,单位现在协商买断工龄,3000/年该走吗?
  10. 我做自媒体每日的工作时间安排