☰
-
Php 95
-
Java 94
-
Javascript 37
-
Regex 18
-
Git 17
-
Security 16
-
Docker 07
-
Python 58
-
Machine Learning 14
-
Book Highlights
Python
/
Goodies
- 1 Language 9
-
Hello World S
-
Variables S
-
Functions S
-
Conditional A S
-
Operators S
-
While S
-
Turtle S
-
Script Mode S
-
Debugging S
- 2 Strings 7
-
Slice S
-
Raw Strings S
-
Regex A S
-
Validation S
-
Config S
-
Security S
-
Encrypt A S
- 3 Collections 5
-
Lists S
-
Dictionaries S
-
Efficiency S
-
Tuples S
-
References S
- 4 Functions 5
-
Recursion S
-
Factorial S
-
Modulus S
-
Reassignment S
-
Approximate S
- 5 Storage 8
-
Files S
-
Databases S
-
Pipes S
-
With open S
-
Shelve A S
-
Zip S
-
Csv S
-
Json S
- 6 Class 4
-
Definition S
-
Attributes S
-
Functional S
-
Methods S
- 7 Goodies 5
-
Conditional Expression S
-
List Comprehension S
-
Generator S
-
Named Tuple S
-
Modules S
- 8 Applications 5
-
Pythagora A S
-
Palindrome A S
-
Binary Search A S
-
Conway Game A S
-
Coin Flip A S
- 9 Scheduler 4
-
Time S
-
Multithreading A S
-
Subprocess S
-
Logging S
- 10 Packages 6
-
Clipboard A S
-
Ocr A S
-
Socket S
-
Image S
-
Virtualenv S
-
Jupyter S
S
R
Q
Python Goodies Named Tuple
A more concise way to define classes But, simple classes don't always stay simple from collections import namedtuple A = namedtuple('A', ['x','y']) nt = A(3, 4)
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 A:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return '(%g, %g)' % (self.x, self.y)
from collections import namedtuple
B = namedtuple('B', ['x', 'y'])
a = A(1, 2)
b = B(1, 2)
assert a.x == 1 == b.x
assert a.y == 2 == b.y
print('Tests passed')
Drawback
p340 The drawback is that simple classes don't always stay simple.
"""Named tuples drawback
Simple classes don't always stay simple
To add more methods you need to inherit the named tuple
"""
from collections import namedtuple
A = namedtuple('A', ['x', 'y'])
class B():
def __init__(self, p):
self.p = p
self.x = p.x
self.y = p.y
def __str__(self):
return 'B(%g, %g)' % (self.x, self.y)
a = A(1, 2)
b = B(A(1, 2))
assert a.x == 1 == b.x
assert a.y == 2 == b.y
print('Tests passed')
➥ Questions
Last update: 69 days ago