Encapsulation unpythonic?
Fabrice Pombet
fp2161 at gmail.com
Sat Aug 31 04:00:28 EDT 2013
On Saturday, August 31, 2013 9:42:55 AM UTC+2, Fabrice Pombet wrote:
> On Saturday, August 31, 2013 9:03:58 AM UTC+2, Gary Herron wrote:
>
> > On 08/30/2013 11:07 PM, Fabrice Pombet
>
> > wrote:
>
> >
>
> >
>
> > ... long discussion elided ...
>
> >
>
> > well, look at that:
>
> >
>
> > a=(1,2)
>
> > a=2+3 ->a is an object and I have changed its type and value from outside. As far as I am concerned this is one hell of an encapsulation violation... Could you do this -strictly speaking- in Java or C++?
>
> >
>
> >
>
> >
>
> >
>
> > Yes, in fact you can do that in C++ and java:
>
> >
>
> >
>
> >
>
> > Obj1 a = ...some object...;
>
> >
>
> > { // new scope...
>
> >
>
> > Obj2 a = ...another object...;
>
> >
>
> > }
>
> >
>
> >
>
> >
>
> > On one line, the name 'a' is bound to one object, and later it is
>
> > bound to another object. Your Python code is similar, binding the
>
> > name 'a' to object (1,2) on one line and the object 5 on the next
>
> > line. Granted, Python seems a little freer because, with it's
>
> > dynamic typing, one doesn't need to create a new scope to rebind a
>
> > name, but all languages with variable names allow some control over
>
> > binding/rebinding names.
>
> >
>
> >
>
> >
>
> > But this has *nothing* at all to do with objects and encapsulation.
>
> >
>
> >
>
> >
>
> > Please don't confuse:
>
> >
>
> > the binding of names to objects and
>
> >
>
> >
>
> >
>
> > the existence of objects and their encapsulated behavior
>
> >
>
> >
>
> > They are very different things.
>
> >
>
> >
>
> >
>
> > --
>
> > Dr. Gary Herron
>
> > Department of Computer Science
>
> > DigiPen Institute of Technology
>
> > (425) 895-4418
>
>
>
> That's interesting, can you do this in C++ or java:
>
>
>
> class X():
def __init__(self, *arg):
for x in arg:
self.x=x
and then:
a=X("x","y","z")
and then:
a.w="w"
?
I guess my point was dynamic typing and encapsulation go a little in opposite directions in terms of philosophy, and it is therefore clear that Python privileges "dynamic typing" kind of thinking over encapsulation as a philosophical stance. Am I the only one thinking like this?
More information about the Python-list
mailing list