gpt4 book ai didi

python - 将子对象的方法放置在我的类中

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:17 24 4
gpt4 key购买 nike

我知道我正在做的可能不是最好的方法,但现在我想不出其他方法。

我基本上拥有的是:

class foo:
def __init__(self):
self.bar = ['bundy']

目前,我正在为我的类定义很多方法来返回列表中方法的结果,如下所示:

def __len__(self):
return len(self.bar)

当然,还有其他与 bar 无关的方法和对象 - 我不会重新发明 list

有没有一种更简单的方法来“复制”这些方法,这样我就不必一一定义它们?

最佳答案

你必须一一定义一些方法,就像你正在做的那样。但是,Python 中除了 list 之外还有一个基类,它为您提供了一种明确定义的方式来确定您需要提供哪些方法,并定义了可以基于此最小集的其余方法。

这些是提供的“abstract base classes” - 您想要的是将对象实现为“可变序列” - 您只需实现 __getitem__、__setitem__、__delitem__、__len__、insert拥有完整的列表功能。

在 python 3.x 中,只需从 collections.abc.MutableSequence 继承您的类并实现它们。 (在 Python 2.7 中,它是 collection.MutableSequence。)。

通过这样做,您将免费获得__contains__、__iter__、__reversed__、index、count、append、reverse、extend、pop、remove__iadd__方法。

关于python - 将子对象的方法放置在我的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41451591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com