python中类属性和实例属性的区别_python中类属性和类实例的属性的区别

python中类属性和类实例的属性的区别

以下内容转载自javaeye.com的作者bluecrystal

环境说明:以下python代码均在python2.5下通过。

最近看到一些人在讨论python中类属性和类的实例的属性,我也来谈谈我个人对这个问题的看法,供pyer参考。

首先我们来简单的定义一个python的类:

Python代码

# coding: utf-8

class

AAA():

aaa = 10

# 情形1

obj1 = AAA()

obj2 = AAA()

print

obj1.aaa, obj2.aaa, AAA.aaa

# 情形2

obj1.aaa += 2

print

obj1.aaa, obj2.aaa, AAA.aaa

# 情形3

AAA.aaa += 3

print

obj1.aaa, obj2.aaa, AAA.aaa

# coding: utf-8

class AAA():

aaa = 10

# 情形1

obj1 = AAA()

obj2 = AAA()

print obj1.aaa, obj2.aaa, AAA.aaa

# 情形2

obj1.aaa += 2

print obj1.aaa, obj2.aaa, AAA.aaa

# 情形3

AAA.aaa += 3

print obj1.aaa, obj2.aaa, AAA.aaa

在上面的代码,类AAA定义了一个属性aaa,py的类成员变量不像java或者c++那样有访问限定符,像aaa这样的属性定义应该理解为类属性定义,

即该定义为所有类AAA的实例所共享,访问该属性,可通过AAA.aaa的方式来访问,是通过类名来引用,但是如果通过类AAA的实例来引用aaa属性,

又会是怎样呢,我们来看情形1.

对于情形1,我相信绝大多数人都会正确的说出结果,那就是:

10  10  10

对于上面这个结果,没有任何悬念,通过两个AAA的实例,以及通过AAA类名引用aaa属性值,都是同样的答案。

那在情形2中,应该是什么结果呢,我相信大多数人还是会说出正确的结果:

12  10  10

在上面这个结果中,一旦执行了obj1.aaa +=

2,也就意味着obj1这个实例有了个实�

相关文档:

Chapter 1

Python and XML

Python and XML are two very different animals, each with a rich

history. Python is a full-scale programming language that has grown

from scripting world roots in a very organic way, through the vision

and guidance of Python's inventor, Guido van Rossum. Guido continue ......

Python的字典操作

Python提供了多种应用于字典的操作。因为字典为容器,内建len函数可以将字典当作单一参数使用听切返回字典对象中项目(键/值对)的数目。

字典会员

在Python2.2以及后面版本,D中的k运算符检测是否对象k是字典D中的键。如果是返回True如果不是返回False。相似的,

索引一个字典

字典D中的值 ......

中文简介

Python (发音:[ 'paiθ(?)n; (US) 'paiθ?n ]n.蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。它的名字来源于一个喜剧,也许最初设 ......

作者:taowen, billrice

http://www.cnblogs.com/taowen/articles/11239.html

Lesson 1 准备好学习Python的环境

下载的地址是:

www.python.org

为了大家的方便,我在校内作了copy:

http://10.1.204.2/tool/compiler&IDE/Python-2.3.2-1.exe

linux版本的我就不说了,因为如果你能够使用linux并安装好说明你可以 ......

SleekEngine

随着计算机硬件的快速发展,10年前因为速度问题而被诟病的Java现在成了计算机流言语言中的老大,但是它却仍被认为复杂笨重,近几年来动态语

言却有后来赶上的趋势,掌握一门动态语言成了程序员需要考虑的事宜。 近期接触了几种流行的动态语言Python, Ruby,

Groovy,它们相比静态语言Java/C++来说,大� ......

你可能感兴趣的:(python中类属性和实例属性的区别_python中类属性和类实例的属性的区别)