创建自定义“列表”属性

2024-03-29 14:07:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为属性列表创建函数。如何为这样的对象创建属性函数?你知道吗

list([1,2,3,4,5]).even()

应返回:

[2,4]

方法应该很简单,但我在将函数与预定义对象列表关联时遇到了问题。你知道吗


Tags: 对象方法函数列表属性listeven
2条回答

不能向任何内置对象添加方法或属性。这是故意的。你知道吗

相反,您可以创建从内置列表派生的自己的列表类型:

class MyList(list):
    def even(self):
        return [x for x in self if x % 2 == 0]

演示:

>>> class MyList(list):
...     def even(self):
...         return [x for x in self if x % 2 == 0]
... 
>>> MyList([1,2,3,4,5]).even()
[2, 4]

有关更多信息,请参见文档中的Classes,特别是Inheritance部分。你知道吗

在Python中不能像在Ruby中那样使用monkeypatch内置对象。您必须构建一个新对象,继承list,并将您的方法放在上面。你知道吗

class MyList(list):
    def even(self):
        return [num for num in self if num % 2 == 0]

MyList([1,2,3,4,5]).even()

相关问题 更多 >