[读书笔记]实例属性vs类属性

类和实例都是namespace,类是类属性的namespace,实例是实例属性的namespace。

 

如何访问类属性?

 

通过类和实例都可以访问类属性,

  • classname.attr_name: 当用类访问类属性时,其搜索顺序时,类的namespace,继承链上的父类namespace;
  • instance.attr_name:实例访问某种属性,其搜索顺序时,实例namespace,类的namespace,继承链上的父类namespace。                                                                                                                        当实例中属性名与类属性名相同时, 类属性则会被实例属性“屏蔽”,当实例属性删除时,类属性则会再次“暴露”给实例

 

注意:只有当类属性是不可变类型时,才有可能被实例属性“屏蔽”掉,比如数字,字符串等,如图1,如图2

    对于可变类型则不会”屏蔽“,比如列表,字典等,如图3

 

图1--数字类型类属性

 

 

图2--字符串类型类属性

 

 

 

图3--列表类型类属性

 

 

所以,修改类属性要使用类名,而不是实例名

posted @ 2013-09-27 14:34  rtems  阅读(212)  评论(0)    收藏  举报