-
Notifications
You must be signed in to change notification settings - Fork 50
/
Copy pathnamedtuple_tutorial.py
35 lines (27 loc) · 1.17 KB
/
namedtuple_tutorial.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from collections import namedtuple
class NetworkAddressClass(object):
def __init__(self, hostname, port):
self.hostname = hostname
self.port = port
if __name__ == "__main__":
print('=== use namedtuple ===')
NetworkAddress = namedtuple('NetworkAddress', ['hostname', 'port']) # write 1
# NetworkAddress = namedtuple('NetworkAddress', 'hostname port') # write 2
print('NetworkAddress._fields', NetworkAddress._fields) # _fields is a tuple with the field names of the class
a = NetworkAddress('localhost', 3306)
print('a.hostname:', a.hostname)
print('a.port:', a.port)
# a.port = 80 # error , tuple read only
network_address_data = ('hello', 1234)
na_1 = NetworkAddress._make(network_address_data) # write 1
na_2 = NetworkAddress(*network_address_data) # write 2
print('na_1', na_1)
print('na_2', na_2)
# _asdict() return a collections.OrderedDict
# That can be used to produce a nice display of data
print('na_1._asdict()', na_1._asdict())
print('=== use class ===')
b = NetworkAddressClass('localhost', 3306)
print('b.hostname:', b.hostname)
print('b.port:', b.port)
b.port = 80