Python
/
Goodies
- 1 Language 9
-
Hello World
-
Variables
-
Functions
-
Conditional
-
Operators
-
While
-
Turtle
-
Script Mode
-
Debugging
- 2 Strings 6
-
Slice
-
Raw Strings
-
Regex
-
Validation
-
Config
-
Escape
- 3 Collections 5
-
Lists
-
Dictionaries
-
Efficiency
-
Tuples
-
References
- 4 Functions 5
-
Recursion
-
Factorial
-
Modulus
-
Reassignment
-
Approximate
- 5 Storage 8
-
Files
-
Databases
-
Pipes
-
With open
-
Shelve
-
Zip
-
Csv
-
Json
- 6 Class 4
-
Definition
-
Attributes
-
Functional
-
Methods
- 7 Goodies 5
-
Conditional Expression
-
List Comprehension
-
Generator
-
Named Tuple
-
Modules
- 8 Applications 5
-
Pythagora
-
Palindrome
-
Binary Search
-
Conway Game
-
Coin Flip
- 9 Scheduler 4
-
Time
-
Multithreading
-
Subprocess
-
Logging
- 10 Packages 2
-
Clipboard
-
Ocr
/
Named Tuple
➟
➟
Last update: 03-12-2021
Normal Class
p338 ! When you define a class you must type a lot of code.
# Named tuples ...
#
# When you define a class you must type a lot of code
# Python provides a more concise way with named tuples
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return '(%g, %g)' % (self.x, self.y)
p = Point(1, 2)
assert p.x == 1
assert p.y == 2
# Named tuples
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
nt = Point(3, 4)
assert nt.x == 3
assert nt.y == 4
Drawback
p340 ! The drawback is that simple classes don't always stay simple.
# Named tuples drawback ...
#
# Simple classes don't always stay simple.
# You might need to add more methods
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
assert p.x == 1
assert p.y == 2
# To add more methods ...
# you need to inherit the named tuple
class Point_new():
def __init__(self, p):
self.p = p
self.x = p.x
self.y = p.y
def __str__(self):
return 'Point_new(%g, %g)' % (self.x, self.y)
p = Point_new(Point(1, 2))
assert p.x == 1
assert p.y == 2
➥ Questions github Goodies