On Thursday, August 30, 2012 12:55:25 PM UTC+2, 陈伟 wrote:
> when i write code like this:
> 
> 
> 
> class A(object):
> 
>      
> 
>     d = 'it is a doc.'
> 
>     
> 
> 
> 
> t = A()
> 
> 
> 
> print t.__class__.d
> 
> print t.d
> 
> 
> 
> the output is same.
> 
> 
> 
> so it means class object's attribute is also the instance's attribute. is it 
> right? i can not understand it.

I think the best way is to think of it as a global attribute restricted to the 
class A. Note that you even don't need an instance to get the value of the 
attribute. You can directly get it from the class itself.

>>> class A(object): d = 'my attribute'
>>> A.d
'my attribute'
>>> aobj = A()
>>> aobj.d
'my attribute'

Note that if you change 'd' it will change for all instances!
>>> bobj = A()
>>> bobj.d
'my attribute'

>>> A.d = 'oops...attribute changed'
>>> aobj.d
'oops...attribute changed'

>>> bobj.d
'oops...attribute changed'

If you want attributes to be local to the instance, you have to define them in 
the __init__ section of the class like this:

class A(object):

   def __init__(self):
        d = 'my attribute'

>>> aobj = A()
>>> bobj = A()

>>> aobj.d
'my attribute'

>>> bobj.d
'my attribute'

>>> aobj.d = 'oops...attribute changed'

>>> aobj.d
'oops...attribute changed'

>>> bobj.d
'my attribute'

Regards,

Marco
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to