如何将NamedTuple子类化为具有可变字段和方法的对象? 我的 init 采用了一种模式,模式的所有字段都应该是可调用的。
class PatternSelection(Patterns.Pattern):
def __init__(self, pattern):
self.xflipped=False
self.yflipped=False
self.rotation=0
def horizontal_flip(self):
if self.rotation%2==0:
self.xflipped^=True
else:
self.yflipped^=True
def vertical_flip(self):
if self.rotation%2==0:
self.yflipped^=True
else:
self.xflipped^=True
def rotate_pattern(self):
self.rotation=(self.rotation+1)%4
其中包括:
Pattern=namedtuple('Patterns', 'width height rules commands')
我希望能够将PatternSelection的实例称为Pattern,但我也希望能够通过它的方法旋转并翻转它。
答案 0 :(得分:0)
我使用__new__而不是__init __:
解决了这个问题def __new__(cls, pattern):
new_selection = super().__new__(cls, *pattern)
new_selection.xflipped = False
new_selection.yflipped = False
new_selection.rotation = 0
return new_selection