2

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

例如:

x = (1, 2, 3)

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

谢谢

4

2 回答 2

4

的,但不要

存在一种黑暗而危险的禁果,不安全且危险地允许这种事情发生。但这是一个黑暗的地方。

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

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 中的自我实现或单链表。

于 2013-09-21T18:18:23.860 回答
3

不可以。你可以用 anamedtuple来介绍各种职位的名字;或者你可以继承元组;或者你可以简单地编写函数。函数没有错。

但是,这些绝对不是一个好主意。最好的办法就是像其他人一样编写代码:使用下标和切片。这些是完全清楚的,并且是每个人都知道的。

最后,您的名称具有高度误导性: first 返回第一个元素;second 返回一个由第二个和第三个元素组成的元组。

于 2013-09-21T18:14:49.060 回答