On 15/02/2012 18:14, Sivaram Neelakantan wrote:

I was under the impression that you have to define the attributes of
the class before using it in an instance.  Following the book
'thinking in Python',

class Point:
...     """pts in 2d space"""
...
print Point
__main__.Point
b = Point()
b.x =3
b.y =4
print b.y
4


Why is it not throwing an error?  This is confusing me a bit.

  sivaram
  --

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Your impression is incorrect. This type of behaviour is allowed because of Python's dynamic nature, so the following is fine.

>>> class Point:
...     """pts in 2d space"""
...     
>>> b = Point()
>>> b.x = 3
>>> b.y = 4
>>> del b.x
>>> del b.y
>>> b.l = 5
>>> b.m = 6
>>> print b, b.l, b.m
<__main__.Point instance at 0x02FB89B8> 5 6

Also be careful of your terminology. Here we are discussing instance attributes. Class attributes are different in that they are are shared at the class level so.

>>> class Point:
...     """pts in 2d space"""
...     x = 3
...     y = 4
...     
>>> a = Point()
>>> b = Point()
>>> a.x
3
>>> b.y
4

HTH.

--
Cheers.

Mark Lawrence.

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to