具有大量实例的Python类

具有大量实例的Python类,python,python-3.x,class,instance,Python,Python 3.x,Class,Instance,我需要定义一个类和许多实例(超过30个,但代码中给出了其中的3个),以便能够在python模块文件之间共享它们。我对以下代码有问题(简化): 它给出了错误: NameError: name 'abc1' is not defined 我试图在类中定义实例,以避免为它们定义实例并使代码变长 通过类定义30多个实例的pythonic方法是什么? 在类中定义实例的解决方案是什么 file1.txt的内容: a b c d e 这是否有助于: class MyClass: def __in

我需要定义一个类和许多实例(超过30个,但代码中给出了其中的3个),以便能够在python模块文件之间共享它们。我对以下代码有问题(简化):

它给出了错误:

NameError: name 'abc1' is not defined
我试图在类中定义实例,以避免为它们定义实例并使代码变长

通过类定义30多个实例的pythonic方法是什么? 在类中定义实例的解决方案是什么

file1.txt的内容:

a
b
c
d
e
这是否有助于:

class MyClass:

    def __init__(self, var):
        self.var = var


with open('/file1.txt') as f:
    objects = [MyClass(line) for line in f]

print(objects[0].var)
print(objects[1].var)
(让我们为该类命名为PEP8)
要定义“以pythonic方式的许多实例”,您可能需要使用列表理解。

在打印语句中
abc1
abc2
应该是
def2
def3
,我想
abc{1,2,3}
仅在方法
class1.read_file()
中可用,其他任何地方都不可用。
abc1
等仅存在于函数范围内,您试图在函数不存在的地方引用它exits@Alex,不,它们是不同的东西。正如Chris所说,变量
abc1
abc2
,和
abc3
仅在
read\u file
功能中可用。除非您将它们设置为
class1
的属性,否则您无法这样访问它们,但这样它们就不会是
class1
本身的实例。@Alex,对于一个类中超过30个的实例,您建议如何使代码更具Python风格?(我有很多python模块文件,也会有很多类和实例在模块之间共享。我会将面向函数的代码转换为类代码。)据我所知,以这种方式定义实例是正确的。我说得对吗?(我的意思是在我的第一篇文章和你的答案中都使用这个结构。)我会接受这个答案,因为它回答了我的一个问题。是的,正确。这就是如何基于多个输入创建多个实例(此处为文件行)
class MyClass:

    def __init__(self, var):
        self.var = var


with open('/file1.txt') as f:
    objects = [MyClass(line) for line in f]

print(objects[0].var)
print(objects[1].var)