如何在Python中填充对象?

时间:2016-12-07 16:57:16

标签: python python-2.7 python-3.x

我有以下对象:

    FILES = (
        ('hello3.txt', True),

    )

如何向FILES添加新元素?

我试过了:FILES.append("name.txt")

我使用此示例并需要添加到目录中的所有文件:https://groups.google.com/forum/#!topic/google-appengine/QOMzUhZ2b3Q

2 个答案:

答案 0 :(得分:2)

你在这里使用元组。有不可变的,你不能在创建后添加东西。

最好的方法是在这里使用另一个数据结构:列表!

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Maven home: C:\Users\kbultman\Downloads\apache-maven-3.3.9\apache-maven-3.3.9
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_79\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "windows

现在,追加功能可以完成其工作

FILES = ['hello3.txt', True]

有关不同数据结构的更多信息: https://docs.python.org/3/tutorial/datastructures.html

如果你需要一个更加困难和高效的结构,请阅读“字典”。

答案 1 :(得分:1)

'tuple' object does not support item assignment. 就像Moses Koledoye所说的那样,元组对象是不可改变的。

如果您要添加或删除FILES, 尝试:

FILES = [('hello3.txt', True)]
FILES.append(('new.txt', False))

如果您想更改文件名或T / F值,请使用list代替tuple

FILES = [['hello3.txt', True]]
FILES.append(['new.txt', False])
FILES[0][1] = False

但我认为这些代码太丑了。我更喜欢创建一个类而不是使用列表。

class File:
    __slots__ = 'name', 'flag'
    def __init__(self, name, flag):
        self.name = name
        self.flag = flag
FILES = [File('hello3.txt', True)]
FILES.append(File('new.txt', False))
FILES[0].flag = False

如果您的文件只有2个属性(名称和标志),那么这也是一种简单的方法。

FILES = {'hello3.txt': True}
FILES['new.txt'] = False