python类名称空间和对象名称空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python类名称空间和对象名称空间相关的知识,希望对你有一定的参考价值。

1 类名称空间

创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

而类的良好总属性:数据属性和函数属性

其中类的数据属性是共享给所有对象

print(id(g1.camp))     #引用的地址是一样的

print(id(Garen.camp))

输出结果为:

364617767096

364617767096

 

其中类的函数属性是绑定到所有对象

print(id(g1.attack))      #两个引用地址不一样

print(id(Garen.attack))

输出结果为:

1009949719304

1009951072464

分析:g1.attack就是在执行Garen.attack的功能,python的class机制会将Garen的函数属性attack绑定给g1,g 1相当于拿到了一个指针,指向Garen类的attack功能。除此之外,g1.attack()会将g1传给attack的第一个参数。

 

2 对象(实例)名称空间

创建一个对象(实例)就会创建一个对象(实例)的名称空间,存放对象(实例)的名字,称为对象(实例)的属性

在obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类中找不到就找父类。最后找不到就抛出异常。

 

以上是关于python类名称空间和对象名称空间的主要内容,如果未能解决你的问题,请参考以下文章

Python:模块和类名称空间

面向对象 名称空间和组合

使用 Castle ActiveRecord,当两个类名称相同但名称空间不同时,我会收到 NHibernate DuplicateMappingException

Python3 函数基础2

07-03 名称空间与作用域

名称空间和作用域