Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #49287

Re: class factory question

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail
Return-Path <fabiosantosart@gmail.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.004
X-Spam-Evidence '*H*': 0.99; '*S*': 0.00; 'dynamically': 0.07; 'explicit': 0.07; 'parser': 0.07; 'here?': 0.09; 'says.': 0.09; 'tmp': 0.09; 'subject:question': 0.10; 'cc:addr:python-list': 0.11; '(defined': 0.16; '__all__': 0.16; 'declarations': 0.16; 'library).': 0.16; 'object()': 0.16; 'pythonic': 0.16; 'subject:class': 0.16; '{})': 0.16; 'thanks,': 0.17; 'wrote:': 0.18; 'module': 0.19; 'email addr:gmail.com&gt;': 0.22; 'cc:addr:python.org': 0.22; 'cc:2**0': 0.24; 'cc:no real name:2**0': 0.24; '&gt;': 0.26; 'this:': 0.26; 'pass': 0.26; 'header:In-Reply-To:1': 0.27; 'external': 0.29; 'message- id:@mail.gmail.com': 0.30; 'code': 0.31; 'lines': 0.31; 'that.': 0.31; '(unless': 0.31; 'bunch': 0.31; 'extending': 0.31; 'way?': 0.31; 'class': 0.32; 'plain': 0.33; "i'd": 0.34; 'could': 0.34; 'classes': 0.35; 'created': 0.35; 'something': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'really': 0.36; 'doing': 0.36; 'list': 0.37; 'skip:& 10': 0.38; 'same.': 0.38; 'most': 0.60; 'name': 0.63; 'more': 0.64; 'different': 0.65; 'to:addr:gmail.com': 0.65; 'behavior': 0.77; 'completion': 0.78; 'zen': 0.84; '2013': 0.98
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Fhnqlq+33jNOEx61N4HJFa83toVIrpcfOAhdFy93OFA=; b=UUIVubLM5DOHC+tWJI2mHJhXMJGFQ0Whq/7wOL4y6dALcM9QhoZOZ+SvhMp1tAv0gB aDoVLut5h4a/HFtrezDGYetkWmgr30FI88rEnqb6Vk+ARBRPjapQaFhZNgFFnafnqsJb SUzULF/Lugt68AjkWSJYWoxuWfrocutDVIVVfyv9xiBiMdYV2cJnkagUD+dhGoBCFItI GDYuT6cRCbffYtcWAiElj1N2MYYxcXFDIiqYsCUl4XT4E2ijjLygDVoxAr332a/vEsZK SaG9Z39Ou306wKshJkAx0/vW9NVN1Fq0LMx5PAZtWCtAjwCzDPebTtV8gUMZQ/LUKPmg 5A0g==
MIME-Version 1.0
X-Received by 10.229.141.10 with SMTP id k10mr1827088qcu.44.1372289724029; Wed, 26 Jun 2013 16:35:24 -0700 (PDT)
In-Reply-To <138ce5a8-1b4c-49d4-8005-d5f4642dcb97@googlegroups.com>
References <138ce5a8-1b4c-49d4-8005-d5f4642dcb97@googlegroups.com>
Date Thu, 27 Jun 2013 00:35:23 +0100
Subject Re: class factory question
From Fábio Santos <fabiosantosart@gmail.com>
To Tim <jtim.arnold@gmail.com>
Content-Type multipart/alternative; boundary=90e6ba3098a887a35304e017198c
Cc python-list@python.org
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.15
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.3909.1372290126.3114.python-list@python.org> (permalink)
Lines 80
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1372290126 news.xs4all.nl 15882 [2001:888:2000:d::a6]:48608
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:49287

Show key headers only | View raw


[Multipart message — attachments visible in raw view] - view raw

On 26 Jun 2013 14:14, "Tim" <jtim.arnold@gmail.com> wrote:
>
> I am extending a parser and need to create many classes that are all
subclassed from the same object (defined in an external library).  When my
module is loaded I need all the classes to be created with a particular
name but the behavior is all the same. Currently I have a bunch of lines
like this:
>
>     class Vspace(Base.Command): pass
>     class Boldpath(Base.Command): pass
>
> There are a bunch of lines like that.
> Is there a better way? Something like
>
>     newclasses = ['Vspace', 'Boldpath', ... ]
>     for name in newclasses:
>         tmp = type(name, (Base.Command,) {})
>         tmp.__name__ = name
>
> Is there a more pythonic way?
> thanks,
> --Tim
>

I would say The Most Pythonic Way is to use the class declarations as you
are doing now. Explicit is better than implicit, or so the zen says.

It will be better for tools as well. I'd like to see code completion work
on dynamically created classes like that (unless you use __all__ to list
them.).

And, are you really looking for classes here? If you just want to create
different names with different identities, you could consider using plain
old strings or object() to do that.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

class factory question Tim <jtim.arnold@gmail.com> - 2013-06-26 06:09 -0700
  Re: class factory question Peter Otten <__peter__@web.de> - 2013-06-26 15:39 +0200
    Re: class factory question Tim <jtim.arnold@gmail.com> - 2013-06-26 07:08 -0700
      Re: class factory question Peter Otten <__peter__@web.de> - 2013-06-26 16:46 +0200
        Re: class factory question Tim <jtim.arnold@gmail.com> - 2013-06-26 08:05 -0700
      Re: class factory question Joshua Landau <joshua.landau.ws@gmail.com> - 2013-06-26 16:17 +0100
      Re: class factory question Peter Otten <__peter__@web.de> - 2013-06-26 17:40 +0200
      Re: class factory question Joshua Landau <joshua.landau.ws@gmail.com> - 2013-06-27 00:20 +0100
  Re: class factory question Fábio Santos <fabiosantosart@gmail.com> - 2013-06-27 00:35 +0100
  Re: class factory question Joshua Landau <joshua.landau.ws@gmail.com> - 2013-06-27 14:16 +0100
    Re: class factory question Tim <jtim.arnold@gmail.com> - 2013-06-27 06:37 -0700
      Re: class factory question Dave Angel <davea@davea.name> - 2013-06-27 09:48 -0400
        Re: class factory question Irmen de Jong <irmen.NOSPAM@xs4all.nl> - 2013-06-27 17:56 +0200
          Re: class factory question Tim <jtim.arnold@gmail.com> - 2013-06-27 09:40 -0700

csiph-web