[Tutor] Class definition confusion

Hugo Arts hugo.yoshi at gmail.com
Wed Feb 15 19:35:41 CET 2012


On Wed, Feb 15, 2012 at 7:14 PM, Sivaram Neelakantan
<nsivaram.net at gmail.com> 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.
>

Python is different from static languages like C++. You can add and
remove attributes from objects at any time. You do not have to
declare, in your class, what kind of attributes it has.

An __init__ might seem like it's special in some way, declaring
attributes. But it's not, really, it's just another method that gets
passed the object it is called on (that would be "self"). It's only
special because it gets called when an object is created, so generally
an object is initialized there and attributes are assigned (hence the
name "init").'

HTH,
Hugo


More information about the Tutor mailing list