Im folgenden Programmstück funktioniert alles wie vorgeschrieben und auch erwartet: der Abruf über Namen als auch über Indices, die wiederholte Wertzuweisung hingegen ist verboten:
Code: Alles auswählen
from collections import namedtuple
class Kl():
def __init__(self):
self.pkt = namedtuple('Punkt','x y')
self.pkt = self.pkt(10,20)
##########################################
kl = Kl()
print(kl.pkt)
print(kl.pkt.y)
print(kl.pkt[1])
kl.pkt.y = 30 #AttributeError: can't set attribute
Code: Alles auswählen
from collections import namedtuple
class Kl():
def __init__(self):
self.pkt = namedtuple('Punkt','x y')
(self.pkt.x, self.pkt.y) = (10,20)
##########################################
kl = Kl()
print(kl.pkt)
print(kl.pkt.y)
kl.pkt.y = 30
print(kl.pkt.y)
print(kl.pkt[1]) #TypeError: 'type' object is not subscriptable