Archive
Posts Tagged ‘typing’
namedtuple
February 9, 2017
Leave a comment
A namedtuple can be used as a simple class where you want to group together some attributes, you want to name them, and you don’t need any methods. As its name suggests, it’s a tuple, but you can assign names to the attribues.
Example
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y']) # name of the "struct" and its attributes
# Point = namedtuple('Point', 'x y') # it would also work, and it means the same
# the 2nd parameter can be a single space-delimited string
def main():
p = Point(x=1, y=4)
print(p) # Point(x=1, y=4)
p = Point(1, 4)
print(p) # Point(x=1, y=4)
print(p.x) # 1
print(p[0]) # 1
print(p == (1, 4)) # True
Class Syntax (Update: 20180814)
If you want to work with named tuples, there is an alternative syntax, which is available from Python 3.6. I find it more readable.
from typing import NamedTuple
class MyPoint(NamedTuple):
x: int
y: int
def main():
p = MyPoint(x=1, y=4)
print(p) # MyPoint(x=1, y=4)
p = MyPoint(1, 4)
print(p) # MyPoint(x=1, y=4)
print(p.x) # 1
print(p[0]) # 1
print(p == (1, 4)) # True
This is equivalent to the previous “namedtuple” version.
Categories: python
collections, namedtuple, typing
