动态生成的类实例

2024-10-03 15:21:25 发布

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

我想存储值,我计划稍后使用PyPDF2在我的计算机上对pdf进行排序。 我认为,如果我创建了一个类并为每种类型的文件(例如描述符、一个文件唯一的字符串,稍后可以由PyPDF2找到,例如帐号和文件应该移动到的路径)存储了标识信息,那么就可以工作了。像这样:

class File_Sort(object):
def __init__(self, identifier, file_text, file_path):
    self.identifier = identifier
    self.file_text = file_text
    self.file_path = file_path

我的一个输入示例是:

filetype0001 = File_Sort("Phone Bill", "123456", "/Users/Me/PhoneBills/")

我想让用户通过一系列原始输入问题生成新的文件类型,但我不知道如何生成变量来创建新实例,这样我就可以得到:

filetype000[自动递增数字]=文件排序(UserResponse1,UserResponse3,UserResponse3)。你知道吗

创建“filetype000[automatically incrementing number]”文本本身似乎很容易:

file_number += 1
file_name = "filetype" + str(file_number).zfill(4)

但是如何将生成的文件名字符串转换为变量并填充它呢?你知道吗


Tags: 文件path字符串textselfnumber排序sort
2条回答

所以我最后用的是:

file_descriptor = []
file_string = []
file_location = []

filetype_new = len(file_descriptor)

input_descriptor = raw_input("What is the description of the new file type? ")
file_descriptor.append(input_descriptor)
input_filestring = raw_input("What is unique string to search for in this file type? ")
file_string.append(input_filestring)
input_filelocation = raw_input("where should we put this file type? ")
file_location.append(input_filelocation)

print("file%s: %s, \t%s, \t%s" % (str(filetype_new+1).zfill(4), file_descriptor[filetype_new], file_string[filetype_new], file_location[filetype_new]))

review = raw_input("\nWould you like to review the current files? y/n ").lower()
while review not in "yn":
    review = raw_input("Sorry, I don't understand. Would you like to review your file types? y/n ").lower()
print("There are currently sort instructions for %s filetypes: " %  (len(file_descriptor)))
file_increment = 0
while file_increment in range(0, len(file_descriptor)):
    print("file%s: %s, \t%s, \t%s" % (
    str(file_increment + 1).zfill(4), file_descriptor[file_increment], file_string[file_increment],
    file_location[file_increment]))
    file_increment += 1

谢谢你的建议。你知道吗

听起来你想动态地创建变量。那几乎总是一件愚蠢的事。相反,您应该使用一个数据结构,比如列表或字典,它由您想要动态生成的变量名的部分索引。你知道吗

因此,与其创建名为filetype000的列表,不如从名为filetypes的列表开始,并附加一个内部列表,这样就可以执行filetypes[0]来获取它。或者,如果字符串名称对您的特定应用程序更有意义,那么让filetypes成为一个字典,并使用filetypes['pdf']之类的内容访问内部列表。你知道吗

我在这里有点含糊,因为我不太了解你的所有伪代码。您的示例的[automatically incrementing number]部分的目的并不明显,因此我或多或少忽略了这些部分。您可能只想从一个空列表和append值开始,而不是以某种方式将其初始化为一个特定的大小,并对其进行神奇的索引。你知道吗

相关问题 更多 >