Re: getting object instead of string from dir()

Discussion in 'Python' started by Jean-Paul Calderone, Dec 17, 2008.

  1. On Wed, 17 Dec 2008 11:52:17 -0800 (PST), Rominsky <> wrote:
    >On Dec 17, 10:59 am, Christian Heimes <> wrote:
    >> Rominsky schrieb:
    >>
    >> > I am trying to use dir to generate a list of methods, variables, etc.
    >> > I would like to be able to go through the list and seperate the
    >> > objects by type using the type() command, but the dir command returns
    >> > a list of strings.  When I ask for the type of an element, the answer
    >> > is always string.  How do I point at the variables themselves.  A
    >> > quick example is:

    >>
    >> > a = 5
    >> > b = 2.0
    >> > c = 'c'

    >>
    >> > lst = dir()

    >>
    >> > for el in lst:
    >> >     print type(el)

    >>
    >> for name, obj in vars().iteritems():
    >> print name, obj
    >>
    >> Christian

    >
    >I do have some understanding of the pythonic methodology of
    >programming, though by far I still don't consider myself an expert.
    >The problem at hand is that I am coming from a matlab world and trying
    >to drag my coworkers with me. I have gotten a lot of them excited
    >about using python for this work, but the biggest gripe everytime is
    >they want their matlab ide. I am trying to experiment with making
    >similar pieces of the ide, in particular I am working on the workspace
    >window which lists all the current variables in the namespace, along
    >with their type, size, value, etc.... I am trying to create a python
    >equivalent. I can get dir to list all the variables names in a list
    >of strings, but I am trying to get more info them. hence the desire
    >to do a type command on them. I like the locals and globals commands,
    >but I am still trying to get more info. I have started using the eval
    >command with the strings, which is working, but I am curious if there
    >is a better or more elegant way of getting the info. The eval example
    >would be something like:
    >
    >a = 5
    >b = 2.0
    >c = 'c'
    >
    >lst = dir()
    >
    >for el in lst:
    > print el + '\t' + str(eval('type(%s)'%el))
    >
    >It works, now I am curious if there is a better way.



    What about this:

    >> for name, obj in vars().iteritems():
    >> print name, obj
    >>
    >> Christian


    Jean-Paul
     
    Jean-Paul Calderone, Dec 17, 2008
    #1
    1. Advertising

  2. Jean-Paul Calderone

    Rominsky Guest

    On Dec 17, 1:21 pm, Jean-Paul Calderone <> wrote:
    > On Wed, 17 Dec 2008 11:52:17 -0800 (PST), Rominsky <> wrote:
    > >On Dec 17, 10:59 am, Christian Heimes <> wrote:
    > >> Rominsky schrieb:

    >
    > >> > I am trying to use dir to generate a list of methods, variables, etc..
    > >> > I would like to be able to go through the list and seperate the
    > >> > objects by type using the type() command, but the dir command returns
    > >> > a list of strings.  When I ask for the type of an element, the answer
    > >> > is always string.  How do I point at the variables themselves.  A
    > >> > quick example is:

    >
    > >> > a = 5
    > >> > b = 2.0
    > >> > c = 'c'

    >
    > >> > lst = dir()

    >
    > >> > for el in lst:
    > >> >     print type(el)

    >
    > >> for name, obj in vars().iteritems():
    > >>     print name, obj

    >
    > >> Christian

    >
    > >I do have some understanding of the pythonic methodology of
    > >programming, though by far I still don't consider myself an expert.
    > >The problem at hand is that I am coming from a matlab world and trying
    > >to drag my coworkers with me.  I have gotten a lot of them excited
    > >about using python for this work, but the biggest gripe everytime is
    > >they want their matlab ide.  I am trying to experiment with making
    > >similar pieces of the ide, in particular I am working on the workspace
    > >window which lists all the current variables in the namespace, along
    > >with their type, size, value, etc....  I am trying to create a python
    > >equivalent.  I can get dir to list all the variables names in a list
    > >of strings, but I am trying to get more info them.  hence the desire
    > >to do a type command on them.  I like the locals and globals commands,
    > >but I am still trying to get more info.  I have started using the eval
    > >command with the strings, which is working, but I am curious if there
    > >is a better or more elegant way of getting the info.  The eval example
    > >would be something like:

    >
    > >a = 5
    > >b = 2.0
    > >c = 'c'

    >
    > >lst = dir()

    >
    > >for el in lst:
    > >   print el + '\t' + str(eval('type(%s)'%el))

    >
    > >It works, now I am curious if there is a better way.

    >
    > What about this:
    >
    > >> for name, obj in vars().iteritems():
    > >>     print name, obj

    >
    > >> Christian

    >
    > Jean-Paul


    vars seems to give an identical response as locals and globals, at
    least in my test name space. All three are new commands for me. I
    like the idea of adopting either vars or locals instead of dir as it
    sets up the value for me to use. I will play with them both a little
    more and read up on them to learn there uses and limitations. The key
    step for me is still to be able to automatically query the key names
    from vars or locals for what type the variable is. In my previous
    post I discussed using eval and the string in the key name such as

    eval('type(%s)'%vars().keys()[0])

    I definitely have enough to move forward. Thanks everyone. If anyone
    has any other ideas I would still be interested in learning more.
    Thanks again.
     
    Rominsky, Dec 18, 2008
    #2
    1. Advertising

  3. Jean-Paul Calderone

    Guest

    Quoth Rominsky <>:
    > vars seems to give an identical response as locals and globals, at
    > least in my test name space. All three are new commands for me. I


    Without arguments vars() returns the same thing as locals().

    > like the idea of adopting either vars or locals instead of dir as it
    > sets up the value for me to use. I will play with them both a little
    > more and read up on them to learn there uses and limitations. The key
    > step for me is still to be able to automatically query the key names
    > from vars or locals for what type the variable is. In my previous
    > post I discussed using eval and the string in the key name such as
    >
    > eval('type(%s)'%vars().keys()[0])


    >>> eval('type(%s)'%vars().keys()[0])

    <type 'module'>
    >>> vars().keys()[0]

    '__builtins__'
    >>> vars().values()[0]

    <module '__builtin__' (built-in)>
    >>> type(vars().values()[0])

    <type 'module'>
    >>> for name, obj in vars().items():

    ... print "%s (%s)" % (name, type(obj))
    ...
    __builtins__ (<type 'module'>)
    __name__ (<type 'str'>)
    __doc__ (<type 'NoneType'>)
    __package__ (<type 'NoneType'>)
     
    , Dec 18, 2008
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?UnVkeQ==?=

    Sub Dir, Virtual dir, what do I use?

    =?Utf-8?B?UnVkeQ==?=, Jun 12, 2005, in forum: ASP .Net
    Replies:
    0
    Views:
    448
    =?Utf-8?B?UnVkeQ==?=
    Jun 12, 2005
  2. Rominsky
    Replies:
    5
    Views:
    277
    André
    Dec 18, 2008
  3. Matthew Denner
    Replies:
    1
    Views:
    218
  4. Kga Agk
    Replies:
    2
    Views:
    168
    Kga Agk
    Jun 29, 2009
  5. Nick Gnedin
    Replies:
    2
    Views:
    184
Loading...

Share This Page