On 07/17/2017 03:27 PM, Greg Ewing wrote:
Barry Warsaw wrote:

namedtuple is great and clever, but it’s also a bit clunky.  It has a weird
signature and requires a made up type name.

Maybe a metaclass could be used to make something
like this possible:


    class Foo(NamedTuple, fields = 'x,y,z'):
       ...

Then the name is explicit and you get to add methods
etc. if you want.

From the NamedTuple tests from my aenum library [1]:

    LifeForm = NamedTuple('LifeForm', 'branch genus species', module=__name__)

    class DeathForm(NamedTuple):
        color = 0
        rigidity = 1
        odor = 2

    class WhatsIt(NamedTuple):
        def what(self):
            return self[0]
    class ThatsIt(WhatsIt):
        blah = 0
        bleh = 1

    class Character(NamedTuple):
        # second argument is doc string
        name = 0
        gender = 1, None, 'male'
        klass = 2, None, 'fighter'

    class Point(NamedTuple):
        x = 0, 'horizondal coordinate', 0
        y = 1, 'vertical coordinate', 0

    class Point(NamedTuple):
        x = 0, 'horizontal coordinate', 1
        y = 1, 'vertical coordinate', -1
    class Color(NamedTuple):
        r = 0, 'red component', 11
        g = 1, 'green component', 29
        b = 2, 'blue component', 37

    Pixel1 = NamedTuple('Pixel', Point+Color, module=__name__)
    class Pixel2(Point, Color):
        "a colored dot"
    class Pixel3(Point):
        r = 2, 'red component', 11
        g = 3, 'green component', 29
        b = 4, 'blue component', 37

--
~Ethan~

[1] https://pypi.python.org/pypi/aenum
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to