Modifying Class Object
Steve Howell
showell30 at yahoo.com
Sat Feb 13 23:11:06 EST 2010
On Feb 13, 7:53 pm, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> On Sat, 13 Feb 2010 18:54:34 -0800, Steve Howell wrote:
> > On Feb 13, 6:41 pm, a... at pythoncraft.com (Aahz) wrote:
> > > Regardless of how CPython manages its state internally, Python as a
> > > programming language does not have pointers.
>
> > I agree with your statement for a suitably narrow definition of the
> > words "pointer" and "have."
>
> "Suitably narrow" is not that narrow. By no stretch of the imagination
> can one say that Python has a built-in pointer type analogous to pointers
> in (say) Pascal or C -- you can't usefully get the address of a variable
> (although the CPython implementation leaks the address of objects, it
> does so in a way that is safe and useless for everything but a label).
> There is no equivalent to (say) the Pascal program:
>
> program main(input, output);
> var
> x: integer;
> ptr: ^integer;
>
> begin
> x := 1;
> ptr := @x;
> ptr^ := ptr^ + 1;
> writeln(x);
> end.
>
> For a suitably wide definition of "pointer", then Python does have
> pointers:
>
> data = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
> i = data.index('bbb')
> print data[i]
> i += 1
> data[i] = 'zzz'
>
> but I trust that we all agree that describing the integer offset i above
> as a "pointer" is a reductio ad absurdum.
>
For a suitably wide definition of pointers CPython does indeed have
pointers, and your example is only a weaker case of that truth. There
is no reductio adsurbum. If I argued that CPython had curly braced
syntax that would be absurd, since it is so concretely wrong.
Pointers are a more abstact concept.
More information about the Python-list
mailing list