如何访问继承它的类中的元组元素

时间:2014-12-22 02:17:24

标签: python tuples

假设我尝试编写一个类似于元组的类,除了一个:当你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

1 个答案:

答案 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,您编辑了您的问题
enter image description here