Mailing List Archive

list comprehension namespace problem
Hi all

I have a problem related (I think) to list comprehension namespaces. I
don't understand it enough to figure out a solution.

In the debugger, I want to examine the contents of the current instance,
so I can type

(Pdb) dir(self)

and get the result with no problem.

However, it is a long list containing attribute names and method names,
and I only want to see the attribute names. So I tried this -

(Pdb) [x for x in dir(self) if not callable(getattr(self, x))]
*** NameError: name 'self' is not defined
(Pdb)

Q1. Can someone explain what is going on?

Q2. Is there a way to get what I want?

Thanks

Frank Millman

--
https://mail.python.org/mailman/listinfo/python-list
Re: list comprehension namespace problem [ In reply to ]
On Fri, Sep 25, 2020 at 3:43 PM Frank Millman <frank@chagford.com> wrote:
>
> Hi all
>
> I have a problem related (I think) to list comprehension namespaces. I
> don't understand it enough to figure out a solution.
>
> In the debugger, I want to examine the contents of the current instance,
> so I can type
>
> (Pdb) dir(self)
>
> and get the result with no problem.
>
> However, it is a long list containing attribute names and method names,
> and I only want to see the attribute names. So I tried this -
>
> (Pdb) [x for x in dir(self) if not callable(getattr(self, x))]
> *** NameError: name 'self' is not defined
> (Pdb)
>
> Q1. Can someone explain what is going on?
>
> Q2. Is there a way to get what I want?
>

If you put that line of code into your actual source code, does it
work? I think this might be a pdb-specific issue, since normally the
comprehension should have no difficulty seeing names from its
surrounding context.

A minimal case will probably involve the debugger and a function with
a local, unless in some way this depends on 'self' being special.

ChrisA
--
https://mail.python.org/mailman/listinfo/python-list
Re: list comprehension namespace problem [ In reply to ]
On 2020-09-25 7:46 AM, Chris Angelico wrote:
> On Fri, Sep 25, 2020 at 3:43 PM Frank Millman <frank@chagford.com> wrote:
>>
>> Hi all
>>
>> I have a problem related (I think) to list comprehension namespaces. I
>> don't understand it enough to figure out a solution.
>>
>> In the debugger, I want to examine the contents of the current instance,
>> so I can type
>>
>> (Pdb) dir(self)
>>
>> and get the result with no problem.
>>
>> However, it is a long list containing attribute names and method names,
>> and I only want to see the attribute names. So I tried this -
>>
>> (Pdb) [x for x in dir(self) if not callable(getattr(self, x))]
>> *** NameError: name 'self' is not defined
>> (Pdb)
>>
>> Q1. Can someone explain what is going on?
>>
>> Q2. Is there a way to get what I want?
>>
>
> If you put that line of code into your actual source code, does it
> work? I think this might be a pdb-specific issue, since normally the
> comprehension should have no difficulty seeing names from its
> surrounding context.
>
> A minimal case will probably involve the debugger and a function with
> a local, unless in some way this depends on 'self' being special.
>

Yes, is does work from within my source code.

Frank


--
https://mail.python.org/mailman/listinfo/python-list
Re: list comprehension namespace problem [ In reply to ]
On 2020-09-25 7:46 AM, Chris Angelico wrote:
> On Fri, Sep 25, 2020 at 3:43 PM Frank Millman <frank@chagford.com> wrote:
>>
>> Hi all
>>
>> I have a problem related (I think) to list comprehension namespaces. I
>> don't understand it enough to figure out a solution.
>>
>> In the debugger, I want to examine the contents of the current instance,
>> so I can type
>>
>> (Pdb) dir(self)
>>
>> and get the result with no problem.
>>
>> However, it is a long list containing attribute names and method names,
>> and I only want to see the attribute names. So I tried this -
>>
>> (Pdb) [x for x in dir(self) if not callable(getattr(self, x))]
>> *** NameError: name 'self' is not defined
>> (Pdb)
>>
>> Q1. Can someone explain what is going on?
>>
>> Q2. Is there a way to get what I want?
>>
>
> If you put that line of code into your actual source code, does it
> work? I think this might be a pdb-specific issue, since normally the
> comprehension should have no difficulty seeing names from its
> surrounding context.
>
> A minimal case will probably involve the debugger and a function with
> a local, unless in some way this depends on 'self' being special.
>

Yes, is does work from within my source code.

Frank

--
https://mail.python.org/mailman/listinfo/python-list