Python:是否可以向Tuple类添加新方法

时间:2013-09-21 18:10:14

标签: python tuples

在Python中,是否可以向内置类添加新方法,例如Tuple。我想添加2个新方法:first()返回元组的第一个元素,second()返回没有第一个元素的新元组。

例如:

x = (1, 2, 3)

x.first()   # 1
x.second()  # (2, 3)

由于

2 个答案:

答案 0 :(得分:3)

没有。您可以使用namedtuple为各种职位引入名称;或者你可以继承元组;或者你可以简单地写函数。功能没有任何问题。

然而,绝对没有一个是好主意。最好的想法就是像其他人一样编写代码:使用下标和切片。这些都是完全清楚的,并为每个人所知。

最后,你的名字极具误导性:首先返回第一个元素; second返回由第二个和第三个元素组成的元组。

答案 1 :(得分:3)

,但

存在dark and dangerous forbiddenfruit不安全且危险地允许这样的事情。但这是一个黑暗的地方。

相反,你可以创建一个新类:

class MyTuple(tuple):
    def first(self):
        return self[0]

    def second(self):
        return self[1:]

mt = MyTuple((1, 2, 3, 4))

mt.first()
#>>> 1
mt.second()
#>>> (2, 3, 4)

最好你可以创建一个实际的链表,每次调用时都不需要复制。

最好不要这样做,因为几乎没有任何情况需要Python中的自我实现或单链接列表。