Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #110975
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Ethan Furman <ethan@stoneleaf.us> |
| Newsgroups | comp.lang.python |
| Subject | Re: Namespaces are one honking great idea |
| Date | Sat, 02 Jul 2016 22:14:37 -0700 |
| Lines | 45 |
| Message-ID | <mailman.34.1467522873.2295.python-list@python.org> (permalink) |
| References | <57767a97$0$1606$c3e8da3$5496439d@news.astraweb.com> <577693AC.6090807@stoneleaf.us> <mailman.2.1467388849.2295.python-list@python.org> <5776a3ef$0$1608$c3e8da3$5496439d@news.astraweb.com> <5776C4A4.5000407@stoneleaf.us> <mailman.5.1467401379.2295.python-list@python.org> <577713c6$0$1587$c3e8da3$5496439d@news.astraweb.com> <CAKF=+diE82nJ6wgN2oWYeysLytNqPnfEwngV7QsxwJVaHf1Ebg@mail.gmail.com> <1467435593.1705568.654776673.4D901A33@webmail.messagingengine.com> <CAKF=+dhApO5w_wzXgnUwzr+V5-NXOLas_Mjf3Yr7jm9VSoFfzA@mail.gmail.com> <mailman.27.1467473666.2295.python-list@python.org> <57788a2f$0$22141$c3e8da3$5496439d@news.astraweb.com> <57789F3D.7000809@stoneleaf.us> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| X-Trace | news.uni-berlin.de bUe7KsRvBgLD2PWGKq2IDgjHUqP7uqgZqgoAGVw2z4LA== |
| Return-Path | <ethan@stoneleaf.us> |
| X-Original-To | python-list@python.org |
| Delivered-To | python-list@mail.python.org |
| X-Spam-Status | OK 0.002 |
| X-Spam-Evidence | '*H*': 1.00; '*S*': 0.00; '(without': 0.09; 'from:addr:ethan': 0.09; 'from:addr:stoneleaf.us': 0.09; 'from:name:ethan furman': 0.09; 'likewise': 0.09; 'message- id:@stoneleaf.us': 0.09; 'namespace': 0.09; 'python': 0.10; 'def': 0.13; 'argument': 0.15; 'variables': 0.15; 'already,': 0.16; 'namespace,': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'subject:Namespaces': 0.16; 'wrote:': 0.16; 'refers': 0.18; '>>>': 0.20; 'header:In-Reply-To:1': 0.24; 'module': 0.25; 'header:User- Agent:1': 0.26; 'linux': 0.26; 'rest': 0.26; "skip:' 10": 0.28; 'behaviour': 0.29; '~ethan~': 0.29; 'code': 0.30; 'getting': 0.33; 'class': 0.33; "d'aprano": 0.33; 'decorators': 0.33; 'steven': 0.33; 'but': 0.36; '(3)': 0.36; 'to:addr:python-list': 0.36; 'pm,': 0.36; 'subject:: ': 0.37; '(2)': 0.37; '(1)': 0.38; 'whatever': 0.39; 'to:addr:python.org': 0.40; 'your': 0.60; 'more': 0.63; 'within': 0.64; '(5)': 0.72; 'special': 0.73 |
| User-Agent | Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 |
| In-Reply-To | <57788a2f$0$22141$c3e8da3$5496439d@news.astraweb.com> |
| X-BeenThere | python-list@python.org |
| X-Mailman-Version | 2.1.22 |
| Precedence | list |
| List-Id | General discussion list for the Python programming language <python-list.python.org> |
| List-Unsubscribe | <https://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 | <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe> |
| X-Mailman-Original-Message-ID | <57789F3D.7000809@stoneleaf.us> |
| X-Mailman-Original-References | <57767a97$0$1606$c3e8da3$5496439d@news.astraweb.com> <577693AC.6090807@stoneleaf.us> <mailman.2.1467388849.2295.python-list@python.org> <5776a3ef$0$1608$c3e8da3$5496439d@news.astraweb.com> <5776C4A4.5000407@stoneleaf.us> <mailman.5.1467401379.2295.python-list@python.org> <577713c6$0$1587$c3e8da3$5496439d@news.astraweb.com> <CAKF=+diE82nJ6wgN2oWYeysLytNqPnfEwngV7QsxwJVaHf1Ebg@mail.gmail.com> <1467435593.1705568.654776673.4D901A33@webmail.messagingengine.com> <CAKF=+dhApO5w_wzXgnUwzr+V5-NXOLas_Mjf3Yr7jm9VSoFfzA@mail.gmail.com> <mailman.27.1467473666.2295.python-list@python.org> <57788a2f$0$22141$c3e8da3$5496439d@news.astraweb.com> |
| Xref | csiph.com comp.lang.python:110975 |
Show key headers only | View raw
On 07/02/2016 08:44 PM, Steven D'Aprano wrote:
> Try getting this behaviour from within a class:
>
>
> class Food(metaclass=Namespace):
>
> # (1) no special decorators required
> def spam(n):
> return ' '.join(['spam']*n)
>
> # (2) can call functions from inside the namespace
> breakfast = spam(5)
>
> # (3) no "cls" or "self" argument
> def lunch():
> # (4) can access variables using their undotted name
> return breakfast + ' and eggs'
>
> def supper():
> # (5) likewise functions (a special case of #4)
> return lunch() + ' and a fried slice of spam'
>
> def mutate(n):
> # global inside the namespace refers to the namespace,
> # not the surrounding module
> global breakfast
> breakfast = spam(5)
> Can you do all of that with an ordinary class?
You can get #2 already, but not the rest (without your spiffy code ;) :
Python 3.5.1+ (3.5:f840608f79da, Apr 14 2016, 12:29:06)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class Huh:
... def blah(text):
... print('blah blah %s blah blah blah' % text)
... blah('whatever')
...
blah blah whatever blah blah blah
--
~Ethan~
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-02 00:13 +1000
Re: Namespaces are one honking great idea Random832 <random832@fastmail.com> - 2016-07-01 10:40 -0400
Re: Namespaces are one honking great idea BartC <bc@freeuk.com> - 2016-07-01 15:49 +0100
Re: Namespaces are one honking great idea Chris Angelico <rosuav@gmail.com> - 2016-07-02 03:13 +1000
Re: Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-02 03:46 +1000
Re: Namespaces are one honking great idea Rustom Mody <rustompmody@gmail.com> - 2016-07-01 19:26 -0700
Re: Namespaces are one honking great idea Ethan Furman <ethan@stoneleaf.us> - 2016-07-01 09:00 -0700
Re: Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-02 03:10 +1000
Re: Namespaces are one honking great idea Ethan Furman <ethan@stoneleaf.us> - 2016-07-01 12:29 -0700
Re: Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-02 11:07 +1000
Re: Namespaces are one honking great idea Kevin Conway <kevinjacobconway@gmail.com> - 2016-07-02 01:50 +0000
Re: Namespaces are one honking great idea Lawrence D’Oliveiro <lawrencedo99@gmail.com> - 2016-07-01 19:55 -0700
Re: Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-03 13:22 +1000
Re: Namespaces are one honking great idea Random832 <random832@fastmail.com> - 2016-07-02 00:59 -0400
Re: Namespaces are one honking great idea Kevin Conway <kevinjacobconway@gmail.com> - 2016-07-02 15:34 +0000
Re: Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-03 13:44 +1000
Re: Namespaces are one honking great idea Ethan Furman <ethan@stoneleaf.us> - 2016-07-02 22:14 -0700
Re: Namespaces are one honking great idea Kevin Conway <kevinjacobconway@gmail.com> - 2016-07-03 22:02 +0000
Re: Namespaces are one honking great idea Lawrence D’Oliveiro <lawrencedo99@gmail.com> - 2016-07-03 16:21 -0700
Re: Namespaces are one honking great idea BartC <bc@freeuk.com> - 2016-07-04 01:19 +0100
Re: Namespaces are one honking great idea Ethan Furman <ethan@stoneleaf.us> - 2016-07-03 21:01 -0700
Re: Namespaces are one honking great idea Ethan Furman <ethan@stoneleaf.us> - 2016-07-02 16:28 -0700
Re: Namespaces are one honking great idea Chris Angelico <rosuav@gmail.com> - 2016-07-04 21:37 +1000
Re: Namespaces are one honking great idea Lawrence D’Oliveiro <lawrencedo99@gmail.com> - 2016-07-04 15:09 -0700
Re: Namespaces are one honking great idea Lawrence D’Oliveiro <lawrencedo99@gmail.com> - 2016-07-04 15:11 -0700
Re: Namespaces are one honking great idea jmp <jeanmichel@sequans.com> - 2016-07-04 17:58 +0200
Re: Namespaces are one honking great idea Chris Angelico <rosuav@gmail.com> - 2016-07-05 12:58 +1000
Re: Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-05 13:35 +1000
Re: Namespaces are one honking great idea Chris Angelico <rosuav@gmail.com> - 2016-07-05 13:47 +1000
Re: Namespaces are one honking great idea Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2016-07-05 16:09 +1000
A nestedmodule decorator (Re: Namespaces are one honking great idea) Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2016-07-05 21:10 +1200
Improved nestedmodule decorator implementation Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2016-07-05 21:31 +1200
Re: Improved nestedmodule decorator implementation Steven D'Aprano <steve@pearwood.info> - 2016-07-05 20:54 +1000
Re: Namespaces are one honking great idea Steven D'Aprano <steve@pearwood.info> - 2016-07-05 12:34 +1000
Re: Namespaces are one honking great idea jmp <jeanmichel@sequans.com> - 2016-07-04 13:23 +0200
Re: Namespaces are one honking great idea carlosjosepita@gmail.com - 2016-07-09 07:05 -0700
csiph-web