假设我尝试编写一个类似于元组的类,除了一个:当你print
时,任何超过10的值都被10替换。我通常会这样做一个继承元组但改变__str__
魔法的类。但是,我不知道如何编写元组的__str__
魔术方法,因此我不确定如何访问每个单独的元素以检查它是否大于10来打印它。
是否有任何解决方案(如果相关,这些元组中的每一个只有两个字段)?
class sampleClass(tuple):
def __str__(self):
return "({0}, {1})".format(min(elem1IsomehowGet, 10), min(elem2IsomehowGet, 10))
>>> x = sampleClass((3, 15))
>>> print x
(3, 10)
>>> x[1]
15
答案 0 :(得分:2)
我认为这就是你要找的东西:
class sampleClass:
def __init__(self, tup):
self.tup = tup
def __str__(self): #To print it
return str(tuple([item if item <= 10 else 10 for item in self.tup])) #List comprehension to replace x > 10 with 10, then convert to a tuple, then surround with quotes so __str__ accepts it
def __getitem__(self, ind): #To access by index e.g. x[1], x[-1] etc.
return self.tup[ind]
>>> from sampleClass import sampleClass as sc
>>> x = sc((3, 15))
>>> x[1]
15
>>> print x
(3, 10)
>>>
注意:我使用'H'
替换了大于10的所有值,这是您在问题中写的,但是,在您的问题中,您将其替换为10
注意:JK,您编辑了您的问题